Skip to content

Latest commit

 

History

History
229 lines (158 loc) · 6.54 KB

File metadata and controls

229 lines (158 loc) · 6.54 KB

엑셀 파일 다루기 2: 그래프 그리기

여기서는 그래프 그리기에 중점을 두고 살펴봅시다.

복잡한 데이터를 다루기 전에, 우선 그래프를 그리기 위한 가장 최소한의 형태를 살펴보겠습니다.

import pandas as pd
series = pd.Series([1, 2, 3, 4, 5])
series.plot.bar();

outputs/excel-2-bar-chart.png

import pandas as pd
series = pd.Series([1, 2, 3, 4, 5])
series.plot.barh();

outputs/excel-2-barh-chart.png

import pandas as pd
series = pd.Series([1, 2, 3, 4, 5])
series.plot.line();

outputs/excel-2-line-chart.png

import pandas as pd
series = pd.Series([1, 2, 3, 4, 5])
series.plot.area();

outputs/excel-2-area-chart.png

import pandas as pd
series = pd.Series([1, 2, 3, 4, 5])
series.plot.pie();

outputs/excel-2-pie-chart.png

여러 개의 계열이 있는 경우에는 어떻게 할까요?

import pandas as pd
df = pd.DataFrame([[1, 3, 5, 7, 9], [2, 3, 3, 4, 5]])
df.plot.bar();

outputs/excel-2-dataframe-bar-chart.png

이제 실제 데이터에 대해 그래프를 그려봅시다.

import pandas as pd
df_dtype = pd.read_excel('outputs/실습생_컬럼추가.xlsx', sheet_name='Sheet1',
                         index_col=0,
                         dtype={'번호': 'object', '성별': 'object', '즐기는 음식': 'object', '비만도': 'object', '연령대': 'object'})
df_dtype

우선, 무작정 그래프를 그리라고 해봅시다.

df_dtype.plot();

outputs/excel-1-plot1.png

나이에 대해서만 그래프를 그려볼까요?

df_dtype['나이'].plot();

outputs/excel-1-plot2-age.png

나이는 막대그래프가 더 어울릴 것 같습니다.

df_dtype['나이'].plot.bar();

outputs/excel-1-plot2-age-bar.png

키에 대한 막대그래프를 그려볼까요?

df_dtype['신장(cm)'].plot.bar();

outputs/excel-2-data-bar-chart.png

키가 기본적으로 100cm 이상이라서, 잘 구별되지 않습니다. y축의 기준을 변경해봅시다.

import matplotlib.pyplot as plt
axes = df_dtype['신장(cm)'].plot.bar()
axes.set_ylim((150, 190))
plt.show()

outputs/excel-2-data-bar-chart-ylim.png

두 종류의 컬럼을 함께 그려봅시다.

df_dtype[['나이', '신장(cm)']].plot.bar();

outputs/excel-1-plot2-age-and_height-bar.png

성별에 따른 몸무게 분포가 어떻게 되는지 살펴볼까요?

plt.scatter(df_dtype['성별'], df_dtype['몸무게(kg)']);  # matplotlib를 사용해서 그림
# df_dtype.plot.scatter(x='성별', y='몸무게(kg)');  # pandas가 제공하는 scatter plot은 x,y축 모두 numeric이어야 합니다.

outputs/excel-1-plot-sex-weight-scatter.png

키와 몸무게간의 scatter plot을 그려봅시다.

plt.scatter(df_dtype['신장(cm)'], df_dtype['몸무게(kg)']);  # matplotlib를 사용해서 그림
# df_dtype.plot.scatter(x='성별', y='몸무게(kg)');  # pandas가 제공하는 scatter plot은 x,y축 모두 numeric이어야 합니다.

outputs/excel-1-plot-height-weight-scatter.png

이번에는 빈도에 대한 그래프를 그려봅시다. 우선 비만도에 대한 빈도를 구해봅시다.

df_fat_freq = pd.pivot_table(df_dtype, index='비만도', aggfunc='size')
df_fat_freq
비만도
경도 비만     3
과체중       13
정상          4
dtype: int64

이 빈도에 대해 그래프를 그려봅시다.

import matplotlib.font_manager as fm
matplotlib.rc('font', family='Noto Sans CJK KR')

df_fat_freq.plot.bar();

outputs/excel-2-data-pivot-bar-chart.png

빈도 순으로 정렬해서 그려봅시다.

import matplotlib.font_manager as fm
matplotlib.rc('font', family='Noto Sans CJK KR')

df_fat_freq.sort_values(ascending=False).plot.bar();

outputs/excel-2-data-pivot-bar-chart-sorted.png