# 코드잇 데이터 사이언스 강의 듣는 중
<EDA 예제>
- 생각보다 어떤 걸 적용해야 할지가 바로 떠오르지 않았고 적용하면서도 왜이래.. 하면서 생각보다 시간이 오래걸렸다.
- 그래서 해설을 정리해 두려고 한다.
- 문제는 데이터에서 이 답들을 뽑아 내는 것이었다.
- 정답은 맞췄지만, 시간이 너무 오래 걸렸고, 가장 효율적인 방법으로 찾아내진 못한 것 같다.
그래서 이번 포스팅을 적는다.
- 일단 데이터를 불러오고, 살펴보기
import pandas as pd
import seaborn as sns
titanic = pd.read_csv('data/titanic.csv')
titanic.head()
#데이터 타입 확인
titanic.info()
1) 타이타닉의 승객은 30대와 40대가 가장 많다. --> 히스토그램
- 나는 바이올린 플랏으로 확인했는데, 사실.. 정답처럼 히스토그램이 가장 적합한 듯 하다.
# 나이 분포
titanic.plot(kind='hist', y='Age', bins=30)
--> 20대가 더 많기에 False
2) 가장 높은 요금을 낸 사람은 30대이다. --> 스캐터
- 이걸 처음에 문제를 잘못 읽고 "요금을 많이 낸 나이를 30대"로 읽어서.......어떻게 그려도 확인이 안되는데??? 하면서 시간을 꽤 허비했다.. 그러다가 다시 보니, 가장 높은 요금을 낸 경우라.. 확인했다.
# 나이별 요금 분포
titanic.plot(kind='scatter', x='Age', y='Fare')
--> True
3) 생존자가 사망자보다 더 많다. --> value_counts()
- 이건 처음에 카운트를 생각 못 하고, 플랏을 이리저리 해보다가 안 되서 카운트 적용함.
- 자꾸 연속변수가 아닌데...어떻게 하지? 만 맴돌았음..ㅎ
titanic['Survived'].value_counts()
0 549
1 342
Name: Survived, dtype: int64
--> False
4) 1,2,3 등실 중 가장 많은 사람이 탑승한 곳은 3등실이다. --> value_counts()
- ..문제를 제발 제대로 읽자.. 생존자도 없는데 생존자 있다고 생각해서.. 이리저리 머리 굴리느라 시간만 낭비..ㅎ
titanic['Pclass'].value_counts()
3 491
1 216
2 184
Name: Pclass, dtype: int64
--> True
5) 가장 생존율이 높은 객실 등급은 1등실이다. --> 등고선
- 이건 진짜 스캐터나, jointplot이나 다 안 보여서 등고선을 그렸다.
- 스캐터는 연속변수가 아니라서 안 보여서 등고선으로 했다.
# 객실 등급별 생존율 분포
sns.kdeplot(x=titanic['Pclass'], y=titanic['Survived'])
#내 버전은 x=, y= 을 입력해 줘야함. 아니면 에러뜸
--> 생존자가 그나마 1등급에 몰려 있음
--> 사망자는 확실히 3등급임.
--> 강의 그림과는 다소 다름.
6) 나이가 어릴수록 생존율이 높다. --> stripplot, violinplot
- .. 나 역시 스트립 플랏을 그려보긴 했는데 생존율을 그냥 넣으면 되는데 자꾸 hue 조건으로 넣으려고 해서.. 오류가 계속 났었다.
- strip은 하나를 연속 변수 하는 카테고리로 하면 좋은 듯
# 생존 여부에 따른 나이 분포
sns.stripplot(data=titanic, x="Survived", y="Age")
--> False
7) 나이보다 성별이 생존율에 더 많은 영향을 미친다. --> strip, hue
- 이걸로 위 아래 같이 비교하긴 했었는데, 데이터를 제대로 보지도 않고 Sex가 아닌 Gender를 계속 입력해서.. ㅎ
- 왜 에러뜨나 고민했음..ㅎ
.. 정신 차리자..
# 생존 여부에 따른 나이 및 성별 분포
sns.stripplot(data=titanic, x="Survived", y="Age", hue="Sex")
--> True
- 예제를 풀다보면 아직도 얼마나 안 익숙한지가 보인다.. 더 많은 예제들이 있으면 좋겠다..ㅎ
'Data Science > Pandas' 카테고리의 다른 글
[EDA] 카테고리 분류, .map() (2) | 2024.06.07 |
---|---|
[EDA] 값 추가, 문자열 필터링 .str.contains(''), 값 분리, .str.split() (0) | 2024.06.07 |
[EDA] 가설 검정 전에 data set을 살피는 단계 (2) | 2024.06.03 |
[Pandas] boolean indexing 불린 인덱싱, 다중 조건 인덱싱 (0) | 2024.05.31 |
[Pandas] DataFrame/Series 정보 확인, .describe(), .value_counts() (0) | 2024.05.30 |