제로베이스 데이터 취업 스쿨 6주차 스터디노트 1호
Interactive PYthon NoteBook의 약자
확장자 왜 5글자 씩이나 함...
seaborn
에도 타이타닉 데이터가 있으나 승선자의 이름이 없어 사용하지 못했다.
tensorflow_dataset
이라는 모듈에서 타이타닉 데이터를 받을 수 있다.
확인해보니 데이터가 정제되지 않은 상태여서 쓰려다 말았다.
def get_titanic():
original_csv = f'{os.getcwd()}/../data/original.csv'
if not os.path.exists(original_csv):
TITANIC_URL = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/titanic.xls'
pd.read_excel(TITANIC_URL).to_csv(f'{os.getcwd()}/data/original.csv', index=False)
return pd.read_csv(original_csv)
titanic = get_titanic()
titanic.info()
seaborn
의 countplot
을 사용한다고 가정할 때,
titanic = get_titanic()
sns.countplot(titanic, x='survived')
이런식으로 하는데, counterplot의 x argument로 str을 주고 있다.
이런 부분은 안티패턴으로 알고 있다.
다음과 같은 부분에서 문제 발생 여지가 있다.
titanic = get_titanic()
sns.countplot(titanic, x='survive') # 오타의 경우
titanic.rename(columns={ 'survived': 'alive' })
sns.countplot(titanic, x='survived') # 컬럼명 변경한 경우
대표적으로 위와 같은 경우에서 미리 에러를 걸러낼 수 없다.
str 값을 constant로 지정해주거나 어디서 값을 받아오는 것이 바람직하다.
그런데 str 값을 받아올 수 있는 곳이 은근히 찾기 어려웠다.
현재는 다음과 같이 쓰고 있다.
titanic = get_titanic()
survived = titanic.survived.name
sns.countplot(titanic, x=survived)
# 오타 발생시 pylance에서 에러를 잡아줄 것 (빨간 줄 생김)
sns.countplot(titanic, x=survive)
위의 표에서 0, 1은 명시적이지가 않다.
헷갈릴 여지가 있으니 dead, alive로 변경하고 싶다.
sns.countplot(x=titanic.survived) \
.set_xticks(ticks=[0, 1], labels=['dead', 'alive'])
물론 pandas에서 DataFrame의 값을 변경할 수 있지만,
데이터가 많다면 시간과 메모리의 소모가 클 것임을 예상가능
그러니 시각화 library에서 변경하는 것이 낫다.
참고로, seaborn
도 결국 matplotlib
을 쓰고 있기 때문에
matplotlib
의 method 활용이 가능한 것이다.
아마 항상 되지는 않을 것으로 생각된다.
궁금하다면 공식문서를 참조하면 된다.