이번 포스트에선 스파르타코딩클럽의 "[왕초보] 마케터, 기획자를 위한 실전 데이터 분석" 수업 중 2주차 수업에서 한 걸음 더 나아가기 세션에 대한 개발일지를 정리하고자 한다.
한 걸음 더 나아가기 세션을 요약하자면, Pandas와 Matplotlib 라이브러리 말고 또다른 파이썬 라이브러리인 Numpy와 Seaborn 라이브러리로 데이터를 분석하는 세션이었다.
그럼 데이터를 분석하는 총 5가지 단계인 1) 문제 정의 및 가설 설정하기 → 2) 데이터 분석 기본 세팅 및 데이터 가공하기 → 3) 데이터 분석하기 → 4) 분석 결과 시각화하기 → 5) 최종 결론 내리기 순서로 포스트를 정리해보겠다.
1) 문제 정의 및 가설 설정하기
2주차에서 Kaggle의 타이타닉 데이터를 가지고 "타이타닉 데이터 중 생존율과 다른 데이터의 상관관계"를 분석하였고,
아래와 같은 그래프로 상관관계를 시각화할 수 있었다.
(2주차 수업에 대한 개발일지는 아래 링크를 참고 바란다.
Colab으로 본격 데이터 분석하기 :: 유니스방의 UX World (tistory.com)
Colab으로 본격 데이터 분석하기
스파르타코딩클럽의 "[왕초보] 마케터, 기획자를 위한 실전 데이터 분석" 수업 중 2주차 수업에 대한 개발일지이다. 이번 수업의 목표는 총 3가지이다:1. 데이터 분석을 위한 Python 기초 문법을 습
yunicebahngux.tistory.com
위 그래프를 보았을 때, 생존율과 가장 높은 상관관계를 가진 요소는 성별(Sex)와 탑승등급(Pclass)였다.
그런데, 나이와 생존율의 관계가 미미한 수치로 나왔는데 정말 상관관계가 미미할까?
여기서 한 걸음 더 나아가서, "나이대별로 생존율과의 관계"를 좀 더 명확히 파악할 수 있다.
2) 데이터 분석 기본 세팅 및 데이터 가공하기
데이터를 가공하기에 앞서서, Numpy와 Seaborn 라이브러리는 어떤 목적을 가지고 활용하면 좋은지 알아보자.
Numpy는 데이터 연산을 빠르고 쉽게 할 수 있게 도와주는 라이브러리다.
파이썬으로 복잡한 수치를 계산할 때 거의 필수적으로 사용되는 라이브러리다.
단순 계산기보다는 더 뛰어난 연산 능력을 가진 계산기라고 생각하면 된다.
Seaborn은 Matplotlib으로부터 만들어진 데이터 시각화를 위한 라이브러리다.
기본 Matplotlib 라이브러리보다 더 다양한 스타일의 그래프를 적용할 수 있다.
주로 랜덤하게 분포되어 있는 데이터를 시각화할 때 사용한다.
이제 데이터를 불러오고 확인해보자.
먼저 필요한 라이브러리들을 불러와준다.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np #numpy 라이브러리: 숫자와 관련된 연산들을 잘 소화해주는 라이브러리.
import seaborn as sns #seaborn 라이브러리: matplotlib 으로 부터 만들어진 데이터 시각화를 위한 라이브러리.
그 다음에 분석할 데이터를 불러와주고 확인한다.
titanic = pd.read_table('train.csv',sep=',')
titanic.head(100)
데이터에 누락된 결측치를 제거해준다.
#print(titanic.isnull().sum()) #titanic.isnull=빈값 알려달라.
titanic = titanic.dropna() #drop.na=비어있는 행은 날려버려라.
print(titanic.isnull().sum())
총 데이터수, 평균, 표준 편차 등을 한눈에 보기 위하여, 타이타닉 데이터 통계치를 요약할 수 있다.
titanic.describe() #데이터에 대한 summary. #std: 표준편차
여기서 우리의 가설은 나이와 생존률의 상관관계를 분석하는 것이므로, 나이에 초점을 맞춰야 한다.
참고로 나이에 대한 분포도 그래프를 히스토그램으로 그려볼 수 있다.
참고로 히스토그램은 추이를 볼 때 많이 이용하므로, 데이터 숫자가 어마어마하게 많으면 바그래프보다는 히스토그램을 활용하는게 나을 수 있다.
#나이별로 히스토그램 구하기
titanic['Age'].hist(bins=40,figsize=(18,8),grid=True)
3) 데이터 분석하기
우리의 가설은 나이대별 생존율과의 관계를 알아내는 것이다.
먼저 나이 연령대를 선언해주는 작업을 진행해줘야 한다.
#나이별 구분 및 각 나이별 생존율 확인 하기
#baby: 0~3, children: 7~15..이렇게 라벨링하는 작업.
titanic['Age_cat'] = pd.cut(titanic['Age'],bins=[0,3,7,15,30,60,100],include_lowest=True,labels=['baby','children','teenage','young','adult','old'])
직접 라벨링해준 연령대를 기준으로 평균 값을 구한다.
#연령대를 기준으로 평균 값을 구해 볼수 있어요!
titanic.groupby('Age_cat').mean()
여기서 groupby() 코드는 원하는 컬럼을 기준으로 그룹을 묶을 수 있게 해주는 함수이고,
mean() 함수는 평균값을 구하는 함수이다.
즉, 위 코드에서는 'Age-cat' (나이 연령대)를 기준으로 그룹을 묶어 평균값을 구해주는 것이다. 아래와 같은 표를 출력하고 싶으면 print() 함수를 사용하면 된다.
print(titanic.groupby('Age_cat').mean())
4) 분석 결과 시각화하기
3번에서 분석한 내용을 이제 시각화해보자.
#그래프 크기 설정
plt.figure(figsize=(14,5))
# 바 그래프 그리기 (x축 = Age_cat, y축 = Survived)
sns.barplot(x='Age_cat',y='Survived',data=titanic)
# 그래프 나타내기
plt.show()
5) 최종 결론 내리기
이전에 그래프를 그렸을 때는 나이와 생존율은 상관관계가 거의 없었으나,
위 그래프를 보았을 때, 나이대 별로 나누어서 생존율과의 관계를 보니, baby와 children의 생존율이 다른 연령대에 비해서 높다는 것을 알 수 있었다.
이렇게 Pandas와 Matplotlib 뿐만 아니라, 더 다양한 라이브러리를 활용해 데이터를 분석해보는 경험을 쌓을 수 있었고,
하나의 가설에서만 생각하는 것이 아닌, 더 넓은 시각을 가지고 다양한 가설을 시도해보면 새로운 인사이트를 얻을 수 있다는 것을 배웠다.
위 내용을 진행한 전체 코드는 아래와 같다.
코드를 출력할 때 잠시 숨김처리하고 싶었던 코드는 주석으로 처리해두었다.
참고하면 좋을 것 같다:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np #numpy 라이브러리: 숫자와 관련된 연산들을 잘 소화해주는 라이브러리.
import seaborn as sns #seaborn 라이브러리: matplotlib 으로 부터 만들어진 데이터 시각화를 위한 라이브러리.
titanic = pd.read_table('train.csv',sep=',')
titanic.head(100)
#print(titanic.isnull().sum()) #titanic.isnull=빈값 알려달라.
titanic = titanic.dropna() #drop.na=비어있는 행은 날려버려라.
print(titanic.isnull().sum())
titanic.describe() #데이터에 대한 summary. #std: 표준편차
#나이라는 것도 세부적으로 뜯어볼 수 있다.
#나이별로 히스토그램 구하기
titanic['Age'].hist(bins=40,figsize=(18,8),grid=True)
#나이별 구분 및 각 나이별 생존율 확인 하기
#baby: 0~3, children: 7~15..이렇게 라벨링하는 작업.
titanic['Age_cat'] = pd.cut(titanic['Age'],bins=[0,3,7,15,30,60,100],include_lowest=True,labels=['baby','children','teenage','young','adult','old'])
#연령대를 기준으로 평균 값을 구해 볼수 있어요!
titanic.groupby('Age_cat').mean()
print(titanic.groupby('Age_cat').mean())
#그래프 크기 설정
plt.figure(figsize=(14,5))
# 바 그래프 그리기 (x축 = Age_cat, y축 = Survived)
sns.barplot(x='Age_cat',y='Survived',data=titanic)
# 그래프 나타내기
plt.show()
'데이터 분석일지 > 마케터, 기획자를 위한 실전 데이터 분석' 카테고리의 다른 글
피벗 테이블과 코호트 분석 히트맵 시각화하기 (2) | 2024.06.04 |
---|---|
실무 상황에서 데이터 분석하기 2탄 - 데이터 시각화 (2) | 2024.06.03 |
실무 상황에서 데이터 분석하기 (0) | 2024.05.30 |
Colab으로 본격 데이터 분석하기 (0) | 2024.04.30 |
엑셀로 데이터 분석하기 (1) | 2024.04.18 |