✍🏻 22일 팀스터니 내용 정리.
👀 공부한 실습 코드는 아래 깃허브에 올려두었습니다.
자소서/면접 스터디가 지나고 캐글 필사 스터디로 넘어왔다 :)
그동안 미뤄왔기만 했던 자기소개서 작성을 지난 스터디를 계기로 건드려보기만 한 것 자체로 뿌듯하다 ㅎㅎ
그래도 아직 빈약한 부분이 많아서 다음주에 있을 자기소개서 특강을 잘 듣고 살을 덧붙여봐야겠다.
캐글 필사 스터디로 넘어왔다. 캐글 문제는 대학 생활 때 많이 건드려보긴 했는데 어딘가에 작성이라도 해둘걸😭 너무 아쉬웠다.
머신러닝의 기본 예제라고 할 수 있는 타이타닉을 첫 번째 캐글 필사로 정하고 강의 진도에 맞게 EDA 부분만 필사해보기로 했다.
캐글 API를 사용해 데이터를 다운받는 것은 👀 이 분 사이트를 참고해서 다운받아따😀
필사하면서 몇 가지 배운점을 정리하자면
결측치를 확인하는 과정에서 mano
라는 라이브러리를 배웠다.
https://github.com/ResidentMario/missingno
단순히 수치적으로 확인하는 .isnull().sum()
을 많이 사용했었는데
mano
는 결측치를 시각화해서 보여준다.
msno.matrix(df = 데이터프레임, figsize = , color = )
이렇게 보고자하는 데이터프레임과 색상값을 넣어주면 결측치가 있는 곳이 비어져 출력된다.
bar
는 컬럼별 결측치의 누적값을 볼 수 있어 Age
와 Cabin
컬럼에 결측치가 있고 Cabin
은 결측치가 매우 많은 것을 볼 수 있다.
많은 분들이 factorplot
을 많이 사용하셨는데 23년도인 지금 그 코드를 사용하면 차트가 출력되지 않는다.
📌 factorplot
공식 사이트
https://www.geeksforgeeks.org/python-seaborn-factorplot-method/
이렇게 공식사이트도 있어서 아직 살아있는줄(?) 알았는데
API가 catplot
으로 바뀌었다는 것을 알 수 있었다.
📌 catplot
공식 사이트
https://seaborn.pydata.org/archive/0.11/generated/seaborn.catplot.html#seaborn.catplot
catplot
에 kind
옵션을 주어 해당 차트를 그려도 되고 아니면 직접 stripplot
과 같이 직접 호출해 차트를 그려도 된다.
그런데 한 가지 주의해야할 점이 있다. figure
과 axes
를 생성하고 catplot
을 통해 차트를 생성하게 되면 catplot
호출 시 새로운 figure
과 axes
를 생성하게 되므로 원했던 목적대로 배경에 차트가 구분되어 출력되는 것이 아닌 두 개의 차트가 별도로 표시되는 것을 볼 수 있다.
따라서 이를 해결하기 위해선 catplot
대신 그리려는 차트 함수를 직접 호출해야한다.
📌 차트가 별도로 출력되는 코드
f,ax=plt.subplots(1,2,figsize=(18,6))
# 첫번째 차트 : 가족수 별 생존율
sns.catplot(x = 'FamilySize', y = 'Survived',data=df_train, kind = 'point', ax=ax[0])
ax[0].set_title('FamilySize vs Survived')
# 두번째 차트 : 혼자 탑승했는가의 유무에 따른 생존율
sns.catplot(x = 'Alone', y = 'Survived',data=df_train, kind = 'point', ax=ax[1])
ax[1].set_title('Alone vs Survived')
plt.show()
📌 우리의 목적대로 출력되는 코드
Name
컬럼에서 신분을 추출하고, Parch(부모, 자녀)
와 SibSp(형제 자매)
컬럼을 통해 가족수와 혼자 탑승했는가에 대한 여부 등 여러 컬럼을 생성하여 타겟 데이터에 영향을 끼치는지에 대해 알아보는 것을 통해 과연 내가 혼자 데이터를 분석을 할 때 이정도까지 파악해낼 수 있을까 고민이 되었다.
대학교 과제를 할 때에도 이 EDA 과정에서 시간을 제일 많이 보내기도 했고.. 지금도 그렇고..ㅎㅎ
솔직히 당연히 오랜 시간을 거칠 수 밖에 없는 과정이라고 생각한다. 하지만 우연히 이것저것 해보다가 발견하는 것이 아닌 내가 그 인사이트를 먼저 발견할줄 아는 사람이 되기 위해 생각을 넓고 다양하게 할 수 있어야겠다는 생각이 들었다.👊🏻👊🏻