【Python】seaborn의 그래프를 활용한 데이터 분석의 수법 메모
소개
Kaggle 등에서 데이터 분석을 할 때의 탐색적 데이터 분석(EDA) 단계에서,
자신이 자주 사용하는 데이터의 비주얼화, 그래프화에 관한 수법을 정리했습니다.
이번에는 matplotlib의 래퍼, seaborn을 메인으로 활용하겠습니다.
참고 : h tps : // 세아보 rn. py였다. rg / 어서 x. HTML
각 그래프 구현
■ 설치/라이브러리 로드
#未インストールの方は
pip install seaborn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
■ 데이터 로드
데이터는 Kaggle의 HousePrice의 Train 데이터를 사용합니다.
htps //w w. 꺄gぇ. 코 m / c / 호세 - p 리세 s - d d
df = pd.read_csv('House Price/train.csv')
df.head()
81열의 데이터로 여기에서는 확인할 수 없지만 최종 열의 SalePrice가 목적 변수 데이터입니다.
■ 막대 그래프 활용
항목별 데이터 수량을 파악할 때 사용합니다.
■ 설치/라이브러리 로드
#未インストールの方は
pip install seaborn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
■ 데이터 로드
데이터는 Kaggle의 HousePrice의 Train 데이터를 사용합니다.
htps //w w. 꺄gぇ. 코 m / c / 호세 - p 리세 s - d d
df = pd.read_csv('House Price/train.csv')
df.head()
81열의 데이터로 여기에서는 확인할 수 없지만 최종 열의 SalePrice가 목적 변수 데이터입니다.
■ 막대 그래프 활용
항목별 데이터 수량을 파악할 때 사용합니다.
sns.countplot(x='YrSold', data = df);
■히스토그램 활용
데이터의 분포를 파악하고 싶을 때에 이용합니다.
sns.distplot(df.YearBuilt);
커널 밀도 추정(KDE)도 더해 출력해 줍니다.
■ 산포도의 활용
산점도를 활용하여 두 변수 간의 상관 관계를 시각화합니다.
df.plot(kind='scatter', x='LotFrontage', y='SalePrice');
이쪽은 선형 회귀 직선을 포함한 타입입니다.
sns.regplot(x=df.LotFrontage, y=df.SalePrice);
양의 상관 관계가 있고 LotFrontage가 올라가면 SalePrice도 올라가는 것을 알 수 있습니다.
■ 산포도의 응용
여러 산포도를 함께 표시
목적 변수(SalePrice)와 다른 숫자 데이터의 상관 관계를 함께 표시합니다.
최대 표시 가능 수는 30이므로 변수가 30을 넘는 경우는 모두 표시할 수 없습니다.
#数値データの列のみに絞る
df_n = df.select_dtypes(include=[np.number])
#グラフを作る
fig = plt.figure(figsize=(14,9))
for i in np.arange(30): #30が最大
ax = fig.add_subplot(5,6,i+1)
sns.regplot(x=df_n.iloc[:,i], y=df_n.SalePrice)
#グラフを整えて表示
plt.tight_layout()
plt.show()
■ 박스 플롯 (박스 수염도)의 활용
상자 플롯을 사용하여 객체 데이터와 다른 변수의 관계를 시각화합니다.
sns.boxplot(x="열 이름 1", y="열 이름 2", data=데이터 이름)
sns.boxplot(x="SaleCondition", y="SalePrice", data=df);
■박스 플롯의 응용
모든 객체 데이터와 목적 변수 (SalePrice)의 관계를 함께 표시
df 부분에 데이터 이름, SalePrice 부분에 목적 변수를 다시 입력하면 다른 데이터에도 사용할 수 있습니다.
categorical_features = df.select_dtypes(include=[np.object])
for c in categorical_features:
df[c] = df[c].astype('category')
if df[c].isnull().any():
df[c] = df[c].cat.add_categories(['MISSING'])
df[c] = df[c].fillna('MISSING')
def boxplot(x, y, **kwargs):
sns.boxplot(x=x, y=y)
x=plt.xticks(rotation=90)
f = pd.melt(df, id_vars=['SalePrice'], value_vars=categorical_features)
g = sns.FacetGrid(f, col="variable", col_wrap=2, sharex=False, sharey=False, size=5)
g = g.map(boxplot, "value", "SalePrice")
출력 그래프의 일부 보기
(실제로 모든 객체 변수의 박스 플롯이 표시됩니다)
■히트맵 활용
모든 수치 데이터 간의 상관 관계를 히트 맵으로 표시
plt.figure(figsize=(13, 11))
sns.heatmap(df.corr())
plt.tight_layout();
■히트맵의 응용
목적 변수 열 (SalePrice)과 상관도가 높은 열 베스트 10을 히트 맵으로 표시
어떤 변수가 중요한지 즉시 이해할 수 있으며 변수를 좁힐 때 효과적입니다.
cols = df.corr().nlargest(10,'SalePrice')['SalePrice'].index
cm = np.corrcoef(df[cols].values.T)
plt.subplots(figsize = (12,10))
sns.heatmap(cm, vmax=.8, linewidths=0.01, annot=True, cmap='viridis',
xticklabels=cols.values, yticklabels=cols.values, annot_kws={'size':14});
■ 페어 플롯 활용
쌍 플롯에 지정된 숫자 데이터 열의 상관 관계를 함께 표시
cols = ['SalePrice', '1stFlrSF', 'PoolArea', 'OverallQual'] #任意の列を指定、さらに増やしてもよい
sns.pairplot(df[cols], size=3)
plt.tight_layout();
요약
분석에 자주 사용하는 데이터 시각화 기술을 열거했습니다.
변수 간의 관계를 시각화하고 이해함으로써 데이터 분석의 정확성을 더욱 높일 수 있습니다.
또한 seaborn은 시인성의 높이도 물론 배경색과 색조 등 매우 센스가 잘 분석을 즐겁게 해줍니다.
참고
Matplotlib&Seaborn 구현 핸드북(히데와 시스템)
The Python Graph Gallery : htps : // py 텐-g 등 ph- ぇ ry. 코m/
데이터 구조를 파악한 후의 결측치 처리의 정리 기사도 좋으면 봐 주세요.
htps : // 코 m / 료 111 / ms / 4177c732c9801bcb17
Reference
이 문제에 관하여(【Python】seaborn의 그래프를 활용한 데이터 분석의 수법 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryo111/items/bf24c8cf508ad90cfe2e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Python】seaborn의 그래프를 활용한 데이터 분석의 수법 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryo111/items/bf24c8cf508ad90cfe2e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)