데이터 분석과 시각화 과정 중 EDA(탐색적 데이터 분석) 수업 마지막에는 "타이타닉 EDA 퀴즈"가 있다.
titanic.csv 데이터를 탐색한 후, 보기 7개 중에서 맞는 것 고르는 퀴즈를 풀기 위해 답을 찾은 방법을 정리했다.
1) 타이타닉 승객은 30대와 40대가 가장 많다 (X)
- 나이대별 히스토그램으로 시각화했다.
- 기존 파일에는 "나이대" 컬럼이 존재하지 않아 'Age_cat' 컬럼을 만들어서 추가했다.
#1. 20,30이 제일 많음 ==> X
sns.distplot(df['Age_cat'])
- 나이대 구분 컬럼인 'Age_cat' 만든 방법
#나이대 가져오는 함수 만들기
def age_cat(age):
age = (age//10)*10
return age
Age_cat = df.Age.apply(age_cat) #함수를 적용한 새 필드 만들기
Age_cat = Age_cat.astype('category') #타입을 카테고리로 변경
df.insert(6,'Age_cat',Age_cat) #데이터프레임에 필드 추가하기
*참고한 링크: https://steadiness-193.tistory.com/98
2) 가장 높은 요금을 낸 사람은 30대이다. (O)
- 위에서 만들어준 나이대별 카테고리의 박스 플롯을 그려주었다.
- 30대의 outlier 중 누군가가 엄청나게 높은 요금을 냈다. (바가지 쓴 건가?)
#2. 30대 누군가가 가장 큰 돈을 냄 ==> O
sns.catplot(data=df,x='Age_cat',y='Fare',kind='box')
3) 생존자가 사망자보다 더 많다 (X)
- 'Survived' 컬럼의 파이 플롯을 그려주었다.
- 1이 생존, 0이 사망으로 사망자가 더 많다.
- value_counts()를 적용하지 않고 파이 플롯을 그리면 모든 ID마다 분할되어 나온다.
#3. 사망자가 더 많다 ==> X
df['Survived'].value_counts().plot(kind='pie')
4) 1등실, 2등실, 3등실 중 가장 많은 사람이 탑승한 곳은 3등실이다. (O)
- 좌석 등급 컬럼인 'Pclass'의 파이 플롯을 위와 같은 방식으로 그려주었다.
#4. 가장 많은 사람이 탑승한 곳은 3등실 ==> O
df['Pclass'].value_counts().plot(kind='pie')
5) 가장 생존율이 높은 객실 등급은 1등실이다. (O)
- 위와 같은 방식으로 파이 플롯을 그려주었다.
- 1등급 객실의 생존 건수가 가장 높다.
- 4번 선지에서 1,2 등실 탑승객 수는 비슷하고, 3등실 탑승객이 가장 많았으므로 생존율은 1등실이 가장 높다.
- 카테고리(그룹) 별 생존자 수 합계를 구하기 위해 "groupby"를 사용했다. value_counts()를 쓰면 합계를 구할 수 없다. 카테고리(그룹) 별 행의 개수만 알 수 있다.
#5.가장 생존율이 높은 객실은 1등급 ==> O
grouped=df.groupby(df['Pclass'])
grouped['Survived'].sum().plot(kind='pie')
6) 나이가 어릴수록 생존율이 높다. (X)
- 20세 미만의 미성년자 사망률이 오히려 높다.
- 앞에서 만들어둔 'Age_cat'로 그룹 별 생존자 합계의 직선형 plot을 그려주었다.
#6.0~19세 미성년자의 사망률이 오히려 높음 ==> X
grouped=df.groupby(df['Age_cat'])
grouped['Survived'].sum().plot()
7) 나이보다 성별이 생존율에 더 많은 영향을 미친다. (O)
- 나이-생존율은 음의 상관관계를 보이고, 성별-생존율은 양의 상관관계를 보인다.
- 성별은 숫자가 아니어서 corr 값을 구할 수 없기에 여자는 1, 남자는 0으로 인코딩한 컬럼 ('Sex_cat')을 추가했다.
#7.나이와 생존은 음의 상관관계, 성별과 생존은 양의 상관관계 ==> O
print(df.corr()['Age']['Survived'])
print(df.corr()['Sex_cat']['Survived'])
#결과
# -0.07722109457217756
# 0.5388255930146358
*컬럼 추가 방법
df.loc[df['Sex']=='female','Sex_cat']=1
df.loc[df['Sex']=='male','Sex_cat']=0
'서비스 기획 > ☁️ 데이터 분석 공부' 카테고리의 다른 글
영등위 API에서 등급정보 자동으로 불러오기 (0) | 2022.07.30 |
---|---|
[코드잇] 데이터 사이언스 입문 수강 완료! (0) | 2022.07.18 |
[코드잇] 1. 데이터 프레임 다루기 (0) | 2022.07.05 |
데이터 분석 - 대검찰청의 범죄자 전과 데이터 (2019) (0) | 2022.06.13 |
딥러닝 CDS 교육 후기 (0) | 2022.05.24 |
댓글