컬럼 당 분포를 거의 단번에 출력
11941 단어 pandas파이썬seabornmatplotlib
과제 제기
가리비의 데이터 세트가 수중에 있다고 가정합니다.
강렬하게 큰 데이터가 아니면, python
의 pandas
의 read_csv
에서 읽고 개관을 잡을 때, 우선은 .describe()
에서 각종 통계량을 파악할 수 있습니다만, 다음의 한 손으로 컬럼마다의 분포 보고 싶지 않아?
이 기사에서는, matplotlib
, pandas plot
, seaborn
의 3 개의 묘화 라이브러리를 사용해, 거의 단번에 각 컬럼의 분포를 묘화 하는 코드를 소개합니다.
환경
python 3.6
라이브러리 그룹 준비
처음에 쓴 것처럼 matplotlib
, pandas
, seaborn
를 읽어 둡니다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
데이터 로드 및 데이터 프레임 생성
이 예에서는 load_boston
를 기반으로 하지만, 자신의 데이터라도 좋을 것입니다.
from sklearn.datasets import load_boston
X = load_boston()
X.feature_names
# array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')
df = pd.DataFrame(X.data, columns=X.feature_names)
df.head()
데이터는 이런 느낌:
그래서 처음에 쓴 .describe()
을 마침내,
df.describe()
이런 느낌:
뭐, 그런 걸까, 라고.
분포를 확인?
데이터를 볼 때, 자면이 아니고 그림적으로 보이는 것이 직감에 호소하는 일도 있지요.
우선은 히스토그램이라고 하는지 분포를 그려 보자,(이 기사의 목표)
데이터세트df
의 열CRIM
분포(히스토그램)를 확인해 봅니다.
matplotlib의 경우
plt.hist(df['CRIM'])
pandas plot의 경우
pandas
그리기 기능을 사용하면
df['CRIM'].plot(kind='hist')
seaborn의 경우
왠지 야케에 bin이 가늘다,,,
sns.histplot(df['CRIM'])
다만, 컬럼마다 이것을 하는 것 같네요. .
칼럼 당 분포를 출력합시다.
어쨌든, 많은 그래프를 내기 때문에 조금 큰 쪽으로 출력하도록 해 둡시다 :
fig = plt.figure(figsize=(25, 25))
그 후, 방금전과 같이 3가지( matplotlib
, pandas plot
, seaborn
)로 단번에 출력하는 코드를 써 봅니다.
matplotlib로 단번에 출력
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
plt.hist(df[col])
plt.title(col)
포인트
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
python 3.6
라이브러리 그룹 준비
처음에 쓴 것처럼 matplotlib
, pandas
, seaborn
를 읽어 둡니다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
데이터 로드 및 데이터 프레임 생성
이 예에서는 load_boston
를 기반으로 하지만, 자신의 데이터라도 좋을 것입니다.
from sklearn.datasets import load_boston
X = load_boston()
X.feature_names
# array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')
df = pd.DataFrame(X.data, columns=X.feature_names)
df.head()
데이터는 이런 느낌:
그래서 처음에 쓴 .describe()
을 마침내,
df.describe()
이런 느낌:
뭐, 그런 걸까, 라고.
분포를 확인?
데이터를 볼 때, 자면이 아니고 그림적으로 보이는 것이 직감에 호소하는 일도 있지요.
우선은 히스토그램이라고 하는지 분포를 그려 보자,(이 기사의 목표)
데이터세트df
의 열CRIM
분포(히스토그램)를 확인해 봅니다.
matplotlib의 경우
plt.hist(df['CRIM'])
pandas plot의 경우
pandas
그리기 기능을 사용하면
df['CRIM'].plot(kind='hist')
seaborn의 경우
왠지 야케에 bin이 가늘다,,,
sns.histplot(df['CRIM'])
다만, 컬럼마다 이것을 하는 것 같네요. .
칼럼 당 분포를 출력합시다.
어쨌든, 많은 그래프를 내기 때문에 조금 큰 쪽으로 출력하도록 해 둡시다 :
fig = plt.figure(figsize=(25, 25))
그 후, 방금전과 같이 3가지( matplotlib
, pandas plot
, seaborn
)로 단번에 출력하는 코드를 써 봅니다.
matplotlib로 단번에 출력
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
plt.hist(df[col])
plt.title(col)
포인트
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
이 예에서는
load_boston
를 기반으로 하지만, 자신의 데이터라도 좋을 것입니다.from sklearn.datasets import load_boston
X = load_boston()
X.feature_names
# array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')
df = pd.DataFrame(X.data, columns=X.feature_names)
df.head()
데이터는 이런 느낌:
그래서 처음에 쓴
.describe()
을 마침내,df.describe()
이런 느낌:
뭐, 그런 걸까, 라고.
분포를 확인?
데이터를 볼 때, 자면이 아니고 그림적으로 보이는 것이 직감에 호소하는 일도 있지요.
우선은 히스토그램이라고 하는지 분포를 그려 보자,(이 기사의 목표)
데이터세트df
의 열CRIM
분포(히스토그램)를 확인해 봅니다.
matplotlib의 경우
plt.hist(df['CRIM'])
pandas plot의 경우
pandas
그리기 기능을 사용하면
df['CRIM'].plot(kind='hist')
seaborn의 경우
왠지 야케에 bin이 가늘다,,,
sns.histplot(df['CRIM'])
다만, 컬럼마다 이것을 하는 것 같네요. .
칼럼 당 분포를 출력합시다.
어쨌든, 많은 그래프를 내기 때문에 조금 큰 쪽으로 출력하도록 해 둡시다 :
fig = plt.figure(figsize=(25, 25))
그 후, 방금전과 같이 3가지( matplotlib
, pandas plot
, seaborn
)로 단번에 출력하는 코드를 써 봅니다.
matplotlib로 단번에 출력
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
plt.hist(df[col])
plt.title(col)
포인트
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
plt.hist(df['CRIM'])
df['CRIM'].plot(kind='hist')
sns.histplot(df['CRIM'])
어쨌든, 많은 그래프를 내기 때문에 조금 큰 쪽으로 출력하도록 해 둡시다 :
fig = plt.figure(figsize=(25, 25))
그 후, 방금전과 같이 3가지(
matplotlib
, pandas plot
, seaborn
)로 단번에 출력하는 코드를 써 봅니다.matplotlib로 단번에 출력
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
plt.hist(df[col])
plt.title(col)
포인트
for i, col in enumerate(df.columns):
plt.subplot2grid((5, 3), (i//3, i%3))
for
루프로 컬럼을 하나씩 취해 늘어놓으면 좋겠다, 라고. enumerate
로 그래프에 차례로 i
를 붙여 그려 갑니다. plt.subplot2grid
에서 그것을 실현합니다. 그리드 모양으로 나란히 갑니다.(5,3)
곳은 세로로 5
, 옆에 3
늘어서 있다는 의미. load_boston
에는 열이 13
있습니다. 5 x 3=15
그리드를 준비해 두면 전부 그려집니다. (i//3, i%3)
그리드 좌표 같은 느낌. i//3
는 i
를 3
로 나눈 경우의 몫이고 i%3
는 너무. 이미지적으로는 ↓ 느낌입니다.plt.hist(df[col])
로 그리기, plt.title(col)
에서 제목을 표시하고, col
마다 실행합니다. 색감을 바꾸거나, 그리드의 크기를 바꾸거나 하는 경우는 적절히 인수를 바꾸거나,, 등은, Reference 를 바라봐 주세요! pandas plot으로 출력
기본 아이디어는 함께 있지만
pandas plot
경우 코드 :for i, col in enumerate(df.columns):
ax = plt.subplot2grid((5, 3), (i//3, i%3))
df[col].plot(kind='hist', ax=ax)
ax.set_title(col)
seaborn으로 출력
마찬가지로
seaborn
이런 느낌 :for i, col in enumerate(df.columns):
ax = plt.subplot2grid((5, 3), (i//3, i%3))
sns.histplot(df[col], ax=ax)
ax.set_title(col)
Reference
Reference
이 문제에 관하여(컬럼 당 분포를 거의 단번에 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kyoro1/items/dc15591468d799e36fd5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)