2023.04.02 - [IT/Data 분석] - [우주선 생존] 분석 5회차
5회차에서 간과했던 것이 있다.
결측치를 제거하면 자동으로 타입이 변환될 것으로 예상했는데, 다른 말로 object 였던 타입이 실수형이나 논리형으로 자동 변환될 것으로 예상하고 진행하였는데 그렇지 않았다 필요에 맞게 다시 형변환이 필요하다는 것을 깨달았다.
결측치를 제거하고도 boolean 타입으로 변경되었을 것이라고 생각했던 VIP와 CryoSleep 행이 여전히 object 였다는 것이다.
일단 타입을 변경해보자
일단 그냥 문득 결측치 제거 없이 타입을 변경해보자.
df5 = df.copy()
df5['CryoSleep']=df5['CryoSleep'].astype('bool')
df5['VIP']=df5['VIP'].astype('bool')
df5.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8693 entries, 0 to 8692
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 8693 non-null object
1 HomePlanet 8492 non-null object
2 CryoSleep 8693 non-null bool
3 Cabin 8494 non-null object
4 Destination 8511 non-null object
5 Age 8514 non-null float64
6 VIP 8693 non-null bool
7 RoomService 8512 non-null float64
8 FoodCourt 8510 non-null float64
9 ShoppingMall 8485 non-null float64
10 Spa 8510 non-null float64
11 VRDeck 8505 non-null float64
12 Name 8493 non-null object
13 Transported 8693 non-null bool
dtypes: bool(3), float64(6), object(5)
memory usage: 772.6+ KB
print(df.CryoSleep.isna().sum(),df5.CryoSleep.isna().sum())
203 0
217 0
결측치가 모두 사라져버렸다
df[df.VIP.isna()].VIP.head()
38 NaN
102 NaN
145 NaN
228 NaN
566 NaN
Name: VIP, dtype: object
5개의 VIP값을 한번 확인해보자
print(df.iloc[38].VIP,df5.iloc[38].VIP)
print(df.iloc[102].VIP,df5.iloc[102].VIP)
print(df.iloc[145].VIP,df5.iloc[145].VIP)
print(df.iloc[228].VIP,df5.iloc[228].VIP)
print(df.iloc[566].VIP,df5.iloc[566].VIP)
nan True
nan True
nan True
nan True
nan True
모두 True로 변환이 되었다.
이게 분명 데이터를 분석하는데 영향을 미칠 것이다.
우선 5회차에서 사용했던 df4 (결측치를 제거한) 에서 bool 타입으로 변경한 상관계수와 df5 에서의 bool 타입으로 변경한 상관계수를 비교해보자.
df4.corr()
CryoSleep | Age | VIP | RoomService | FoodCourt | ShoppingMall | Spa | VRDeck | Transported | |
CryoSleep | 1.000000 | -0.085701 | -0.082303 | -0.255398 | -0.210782 | -0.228612 | -0.202216 | -0.199095 | 0.462803 |
Age | -0.085701 | 1.000000 | 0.098138 | 0.074783 | 0.135844 | 0.042314 | 0.123820 | 0.105031 | -0.082553 |
VIP | -0.082303 | 0.098138 | 1.000000 | 0.029009 | 0.135386 | 0.013660 | 0.064792 | 0.130061 | -0.042260 |
RoomService | -0.255398 | 0.074783 | 0.029009 | 1.000000 | -0.013614 | 0.060478 | 0.012472 | -0.026002 | -0.247291 |
FoodCourt | -0.210782 | 0.135844 | 0.135386 | -0.013614 | 1.000000 | -0.012320 | 0.215995 | 0.216997 | 0.055025 |
ShoppingMall | -0.228612 | 0.042314 | 0.013660 | 0.060478 | -0.012320 | 1.000000 | 0.022168 | 0.000383 | 0.011602 |
Spa | -0.202216 | 0.123820 | 0.064792 | 0.012472 | 0.215995 | 0.022168 | 1.000000 | 0.149447 | -0.219854 |
VRDeck | -0.199095 | 0.105031 | 0.130061 | -0.026002 | 0.216997 | 0.000383 | 0.149447 | 1.000000 | -0.207950 |
Transported | 0.462803 | -0.082553 | -0.042260 | -0.247291 | 0.055025 | 0.011602 | -0.219854 | -0.207950 | 1.000000 |
CryoSleep | Age | VIP | RoomService | FoodCourt | ShoppingMall | Spa | VRDeck | Transported | |
CryoSleep | 1.000000 | -0.073771 | -0.050342 | -0.243434 | -0.204765 | -0.208465 | -0.199075 | -0.192749 | 0.451744 |
Age | -0.073771 | 1.000000 | 0.058930 | 0.068723 | 0.130421 | 0.033133 | 0.123970 | 0.101007 | -0.075026 |
VIP | -0.050342 | 0.058930 | 1.000000 | 0.050854 | 0.089639 | -0.001104 | 0.037446 | 0.087322 | -0.024602 |
RoomService | -0.243434 | 0.068723 | 0.050854 | 1.000000 | -0.015889 | 0.054480 | 0.010080 | -0.019581 | -0.244611 |
FoodCourt | -0.204765 | 0.130421 | 0.089639 | -0.015889 | 1.000000 | -0.014228 | 0.221891 | 0.227995 | 0.046566 |
Shoppingmall | -0.208465 | 0.033133 | -0.001104 | 0.054480 | -0.014228 | 1.000000 | 0.013879 | -0.007322 | 0.010141 |
Spa | -0.199075 | 0.123970 | 0.037446 | 0.010080 | 0.221891 | 0.013879 | 1.000000 | 0.153821 | -0.221131 |
VRDeck | -0.192749 | 0.101007 | 0.087322 | -0.019581 | 0.227995 | -0.007322 | 0.153821 | 1.000000 | -0.207075 |
Transported | 0.451744 | -0.075026 | -0.024602 | -0.244611 | 0.046566 | 0.010141 | -0.221131 | -0.207075 | 1.000000 |
sns.heatmap(df5.corr())
히트맵을 통해 두드러진 변화를 알 수 있었다.
그래 근데 이렇게 느낌대로 막 이렇게 하면서 내가 가는 이 길이 잘 가고 있나 하는 의문이 든다.
다음 회차에서는 그래서 이 우주선 생존에서 얻고자하는 결과가 무엇인가를 그래서 그걸 위해 데이터를 어떻게 가공해야할지 고민이 필요해보인다.
'IT > Data 분석' 카테고리의 다른 글
[우주선 생존] 분석 8회차 (0) | 2023.04.11 |
---|---|
[우주선 생존] 분석 7회차 (0) | 2023.04.10 |
[우주선 생존] 분석 5회차 (0) | 2023.04.02 |
[우주선 생존] 분석 4회차 (0) | 2023.03.28 |
[우주선 생존] 분석 3회차 (0) | 2023.03.26 |