학습 목표
- 다양한 변수의 상관관계를 subplot에 그래프로 나타낼 수 있다.
핵심 키워드
- subplot
- distplot
학습하기
학습 목표
- 다양한 변수의 상관관계를 subplot에 그래프로 나타낼 수 있다.
핵심 키워드
- subplot
- distplot
학습하기
학습내용
subplot
distplot은 밀도함수와 커널추정함수를 같이 그려줍니다. subplot은 범주형 column을 시각화할때 사용하는 편입니다.
df["Pregnancies_high"] = df["Pregnancies_high"].astype(int)
h = df.hist(figsize=(15, 15), bins=20)
histplot을 그릴 때는 수치형 데이터만 있어야 합니다. 그래서 boolean 값을 int형으로 바꿔줄 필요가 있습니다.
figsize로 사이즈를 변경하고, bins로 막대의 갯수도 늘려서 그릴 수 있습니다.
결과 :
col_num = df.columns.shape
col_num
모든 column을 다 만들고 싶으면 반복문을 통해 서브플롯을 그려야 합니다. column의 수를 세어봅니다.
결과 :
(10, )
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15, 15))
서브플롯을 그립니다.
plt.subplots만 하면 빈 그래프들만 나옵니다. 이 데이터들을 우선 fig, axes에 넣습니다.
결과 :
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15, 15))
sns.distplot(df["Outcome"], ax=axes[0][0])
Outcome을 x축으로 하는 distplot을 그립니다. ax 옵션에 인덱싱을 하여 원하는 위치를 지정할 수 있습니다.
결과 :
반복문을 활용하여 subplots 그리기
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15, 15))
for i in range(9):
print(i)
반복문을 만들어봅니다.
결과 :
cols = df.columns[:-1].tolist()
cols
cols에 그래프를 그리고 싶은 데이터를 넣습니다.
결과 :
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15, 15))
for i, col_name in enumerate(cols):
row = i // 3
col = i % 3
sns.distplot(df[col_name], ax=axes[row][col])
히스토그램은 빈도수를 y축 값으로 표현합니다.
distplot은 값을 적분했을 때 1이 됐을 때의 값을 y축에 나타내고, 부드러운 밀도함수도 계산해서 그려주고 있습니다.
결과 :
fig, axes = plt.subplots(nrows=4, ncols=2, figsize=(15, 15))
for i, col_name in enumerate(cols[:-1]):
row = i // 2
col = i % 2
sns.distplot(df_0[col_name], ax=axes[row][col])
sns.distplot(df_1[col_name], ax=axes[row][col])
이번에는 nrows와 ncols 옵션을 지정하여 4행 2열로 만들어봅니다.
특정 수치에 따라 당뇨병 발병 여부가 나뉜다는 것을 알 수 있습니다.
글루코스, BMI 높은 사람들이 발병률이 높습니다. 혈압은 당뇨병 발병률과 크게 차이가 없습니다.
이렇게 연속된 수치 변수를 범주형 변수로 만들어서 표현해볼 수 있습니다.
결과 :