자신에게 친절할 것 :)

Data Science/Pandas

[EDA] 적용 예제

Tashapark 2024. 6. 7. 00:55
728x90
반응형

# 코드잇 데이터 사이언스 강의 듣는 중


<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

 

 

 

 

 

 

 


- 예제를 풀다보면 아직도 얼마나 안 익숙한지가 보인다.. 더 많은 예제들이 있으면 좋겠다..ㅎ

728x90
반응형