코딩/Python

파이썬 기초 - 데이터 전처리를 위한 DataFrame 데이터 살펴보기 - (with seaborn)

kaki_ss 2021. 12. 31. 17:10
728x90
반응형

안녕하세요!

오늘은 python에서 데이터 전처리하기 전에 데이터의 구조가 어떻게 되는지 형태를 파악하기 위한 코드를 소개해보려고 합니다.

 

R에서 하던 데이터 분석 작업을 파이썬으로 하려고 하니 처음부터 배우는 게 되어버리게 되었습니다. 그래도 어떻게 분석하는지는 아니깐 순서대로 방법만 배우면 되겠다는 마음으로 공부하고 있습니다.

 

이번에 이용할 데이터는 TITANIC 데이터로 타이타닉 호의 승선객 데이터입니다. 처음에는 이 데이터가 kaggle에서만 다운이 가능한 줄 알았는데 seaborn이라는 패키지에 기본 데이터로 들어가 있는 것을 알게 되었습니다.

 

데이터를 살펴보기 위해 사용할 코드는 4가지입니다.

반응형

먼저, seaborn에서 데이터를 불러와서 시작하겠습니다.

import seaborn as sns

import로 seaborn을 불러와줍니다. as sns는 거의 공식처럼 같이 사용하고 있습니다.

seaborn은 matplotlib을 기초로 하는 시각화를 위한 라이브러리 입니다.

 

import seaborn as sns

#sns의 모든 데이터 셋을 볼 수 있는 코드
sns.get_dataset_names()

처음에 seaborn 안에 어떤 데이터가 있는지를 몰라서 get_dataset_names()를 이용해 라이브러리 안에 어떤 데이터가 있는지 살펴보았습니다.

 

꽤 많은 데이터가 있는 것을 알 수 있는데요. 저는 이 중에서 R에서 많이 사용했었던 iris와 mpg 데이터가 눈에 띕니다.

 

이번 글에서는 titanic데이터를 이용하여 코드를 설명드리겠습니다.

 

#데이터 불러오기
titanic = sns.load_dataset('titanic')

seaborn 안의 데이터를 불러오기 위해서 load_dataset 코드를 이용했습니다. () 안에 내가 원하는 데이터 이름을 적고 실행시켜주면 됩니다.

 

1) shape

 

shape 코드는 데이터의 행과 열을 알 수 있습니다.

 

##shape : 데이터프레임 보기
titanic.shape

shape 코드를 실행시킨 후의 결과를 보면 891,15로 되어있습니다.

titanic 데이터는 891개의 행과 15개의 열을 가지고 있습니다.

 

이렇게 데이터의 대략적인 크기를 알 수 있습니다.

 

2) info

 

info는 앞의 shape보다 더 자세하게 데이터에 대해서 알 수 있습니다. 행과 열의 개수, 열의 이름, null이 아닌 데이터의 수, 그리고 각 열 데이터의 타입까지 알 수 있습니다. 

#info : 데이터 건수, 타입, null 개수
titanic.info()

titanic 데이터를 살펴보면 891개의 행과 15개의 열이 있는 것을 알 수 있습니다. 그리고 survived, pclass 등 각 열의 이름을 확인할 수 있습니다. Non-Null Count는 null이 아닌 데이터의 수를 의미하는데 거의 대부분 891개로 null이 없지만 age, deck, embark_town은 몇몇 데이터가 null임을 알 수 있습니다. 

 

Dtype은 데이터의 타입입니다. int 정수, object 문자, float 실수, category는 카테고리형, bool은 T/F로 각 열의 데이터들이 어떤 타입인지를 알 수 있습니다.

 

3) describe

 

describe는 int나 float 중에서 연속형 데이터일 때 주로 사용합니다. 데이터의 수, 평균, 표준편차, 최솟값, 최댓값, 퍼센타일 등을 알 수 있습니다. describe를 보면서 데이터가 순서형인 것 역시 파악할 수 있습니다.

 

##describe : 데이터 분포도, 개수, 평균, percentile을 확인
titanic.describe()

titanic 데이터에 describe를 했을 때 결과입니다. 옆의 마법봉? 같은 것을 클릭하면 전체 데이터의 describe값이 나옵니다.

 

첫 번째 survived 데이터 같은 경우는 최솟값 0에 50% 값 역시 0이고, max 값이 1인 것을 알 수 있습니다. 이 데이터는 0과 1로 나누어진 데이터로 이 데이터는 범주형인 것을 알 수 있습니다. 이는 pclass 역시 마찬가지입니다. 1,2,3의 숫자만 나와서 데이터의 숫자가 다른 의미를 가진다는 것을 알 수 있습니다. describe로 의미 있는 데이터를 얻고 싶으면 age나 fare 데이터를 살펴보는 게 나을 것 같습니다.

 

age를 자세히 살펴보겠습니다.

titanic.age.describe()

age 데이터를 살펴보면 최솟값은 0.42이고 평균은 약 29.699이고, 최댓값은 80인 것을 알 수 있습니다. age는 타이타닉 호의 탄 승선객들의 나이를 의미합니다. 이를 통해 유의미한 정보를 얻을 수 있을 것 같습니다.

 

4) value_counts

 

마지막으로 value_counts입니다. 여기서는 같은 데이터를 가진 데이터가 얼마나 있는지에 대해서 알 수 있습니다. 즉, 대략적인 분포를 알 수 있습니다.

 

##value_counts : 데이터 분포 확인, 주로 카테고리형으로 많은 순서대로 표시
titanic.value_counts()

titanic 전체에 대해서 value_counts를 수행한 결과 각각의 값들이 같은 데이터가 몇 개인지 알려줍니다. 예를 들어서, 가장 첫 번째 데이터를 살펴보면 survived가 1이고 pclass가 1이고 여성........ 등의 데이터가 모두 같은 사람은 2명이 있다는 것입니다.

 

이렇게만 보면 value_counts 코드를 활용하기 어려울 것 같습니다.

각 열을 이용해서 코드를 사용하면 더욱 효과적입니다.

 

titanic의 embarked 열을 살펴보겠습니다.

titanic.embarked.value_counts()

embarked에 value_counts 코드를 사용해보니 S가 644개, C가 168개, Q가 77개인 것을 알 수 있습니다. value_counts는 순서형 변수나, 범주형 변수를 확인할 때 사용하면 좋을 것 같습니다.

 

 

 

오늘은 데이터 전처리 전에 데이터를 파악하는 코드에 대해서 알려드렸습니다. 이상 값, 결측 값 등을 파악하여 전처리하기 전에 데이터가 어떻게 생겼는지 파악하는 것은 중요합니다.

 

저는 주로 info만 사용했는데 이렇게 정리하면서 다른 코드들도 배우게 된 것 같습니다. 블로그에 차근차근 정리하면... 다른 데이터를 이용해 분석할 때도 블로그 보면서 정리하면 되겠죠....?

 

참고한 서적은 파이썬 머신러닝 완벽 가이드입니다!!

 

 

읽으신 분들에게 도움이 되기를 바라며....

오늘 하루도 즐거운 하루 보내세요( •̀ ω •́ )✧

 

 

2021년 마무리 잘하시고 새해 복 많이 받으세요 o(*^@^*) o

728x90
반응형