Just Fighting
[EDA] 데이터 구조 살펴보기 본문
아래 링크 속 내용을 참고하여 파이썬으로 EDA(탐색적 데이터 분석)을 하는 여러가지 방법을 익힐 수 있었다.
기본적인 부분부터 다양하게 데이터를 시각화하는 부분까지 다룰 수 있었다.
그 내용을 정리해 보고자 한다.
https://kevinprinsloo.medium.com/advanced-eda-e6fea0193dbd
시작하기에 앞서 필요한 라이브러리를 임포트해주고,
사용하고자 하는 데이터를 불러오자.
import pandas as pd
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
%matplotlib inline
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import certifi
from sklearn.datasets import fetch_openml
# Download the dataset from openml
dataset = fetch_openml(data_id=42803, as_frame=True)
# Extract feature matrix X and show 5 random samples
df_X = dataset["frame"]
df_X.sample(5)
라이브러리에 저장되어 있는 데이터 중 하나를 불러왔다.
이 때, 이 데이터의 타입은 딕셔너리와 비슷한 Bunch라는 객체이다.
frame이라는 키를 이용해 데이터를 df_X에 저장했고, 5개의 행을 랜덤으로 확인할 수 있었다.
먼저 데이터의 차원을 살펴보자.
데이터는 363243개의 행과 67개의 열로 구성되어있다.
df_X.shape # 데이터의 차원
컬럼의 타입을 dtypes으로 확인할 수 있다.
df_X.dtypes # 컬럼의 타입
value_counts()를 이용해 컬럼의 타입 개수를 카운트 할 수 있다.
pd.value_counts(df_X.dtypes) # 값 카운트
특정 타입의 컬럼만 보고 싶은 경우에는 select_dtypes()를 사용한다.
제외하고 싶은 타입을 설정하고 싶을 땐 exclude를 사용하고,
특정 타입의 컬럼만 출력하고 싶다면 include를 사용하면 된다.
df_X.select_dtypes(exclude='number').head() # 특정 타입의 컬럼 제외하고 출력
컬럼의 타입을 변경하고 싶을 경우에는 astype()을 사용한다.
아래 코드는 'Sex_of_Driver'를 float로 변경하는 코드이다.
df_X['Sex_of_Driver'] = df_X['Sex_of_Driver'].astype('float') # 컬럼을 float로 변경
데이터의 기술 통계를 보고 싶을 땐 describe()를 사용한다.
여기서도 exclude와 include를 사용할 수 있다.
df_X.describe(exclude='number') # 수치형 자료를 제외한 컬럼의 기술 통계
수치형 자료의 고유값의 개수가 적은 순서대로 정렬하고 시각화 하는 코드이다.
고유값의 개수가 많아 log값으로 스케일해 표현했다.
unique_values = df_X.select_dtypes(include='number').nunique().sort_values() # 수치형 컬럼의 유니크값의 개수로 정렬
plt.figure(figsize=(15,4))
sns.set_style('whitegrid')
g = sns.barplot(x=unique_values.index, y=unique_values.values, palette='inferno')
g.set_yscale('log')
g.set_xticklabels(g.get_xticklabels(), rotation=45, horizontalalignment='right')
g.set_title('Unique values per frequency')
plt.show()
그리고 결측치 여부와 dtype을 한번에 알 수 있는 info()와
수치형 자료의 기술 통계를 볼 수 있는 describe() 함수도 있다.
'Python' 카테고리의 다른 글
[EDA] 데이터 내용 살펴보기 (0) | 2022.07.17 |
---|---|
[EDA] 데이터 정제하기 (0) | 2022.07.17 |
[Flask] API 서버 구축하기 & httpie 사용하기 (0) | 2022.07.01 |
트위터 API 사용하기 (0) | 2022.06.18 |
[Python] map() 사용하기 (0) | 2022.05.24 |