[파이썬 맷플롯립] 바 차트와 히스토그램

이현지·2024년 7월 10일

파이썬

목록 보기
14/21

펭귄의 종별 몸무게 비교

출처: https://www.pkpolar.pl/tag/pingwiny/

씨본과 맷플롯립을 활용하여 각 펭귄의 종 별 몸무게의 차이를 그래프화하려고 한다.

  1. 라이브러리 불러오기
import seaborn as sns
import matplotlib.pyplot as plt
  1. df 불러오기
df = sns.load_dataset('penguins')
df.head()

  1. 산점도 그리기
plt.scatter(df['flipper_length_mm'], df['body_mass_g'])
plt.show()
  1. 데이터프레임 검토
df

  1. 종별 바디매스 평균 보기
df.groupby('species')['body_mass_g'].mean()
df1 = df.groupby('species')['body_mass_g'].mean()
type(df1)

species
Adelie 3700.6623
Chinstrap 3733.0882
Gentoo 5076.0163
Name: body_mass_g, dtype: float64

type(df1) --> 시리즈이다.
pandas.core.series.Series

  1. 리셋인덱스
df.groupby('species')['body_mass_g'].mean().reset_index()

Adelie 종의 평균 몸무게가 3775g,
Chinstrap 종의 평균 몸무게가 3825g,
Gentoo 종의 평균 몸무게가 5050g임을 알 수 있다.

  1. 그래프 그리기
df_group = df.groupby('species')['body_mass_g'].mean().reset_index()
plt.bar(x=df_group['species'], height=df_group['body_mass_g']) 
## bar(x축, height)
plt.show()

df.groupby('species')['body_mass_g'].mean().reset_index()

df 데이터프레임을 species 열을 기준으로 그룹화하고,
각 그룹의 body_mass_g 열의 평균값을 계산한다.

reset_index() 를 사용하여 이 결과를 데이터프레임 형식으로 변환하고,
species 열을 인덱스에서 일반 열로 변환한다.

plt.bar(x=df_group['species'], height=df_group['body_mass_g'])

plt.bar 함수는 막대 그래프를 그리는 함수이다.
x=df_group['species']는 x축에 각 종(species)을 배치한다.
height=df_group['body_mass_g']는 각 막대의 높이를 각 종의 평균 몸무게(body_mass_g)로 설정한다.

plt.show()

plt.show()는 그려진 막대 그래프를 화면에 표시한다.

주의사항: 한글로 작성시 폰트를 지정해줘야 함

  1. 펭귄의 평균 몸무게 분포
plt.rc('font', family='Malgun Gothic')
plt.bar(x=df_group['species'], height=df_group['body_mass_g']) ## bar(x축, height)
plt.xlabel('Body Mass')
plt.ylabel('Count')
plt.title('펭귄의 몸무게 분포')
plt.show()

plt.rc('font', family='Malgun Gothic')

plt.rc 함수는 맷플롯립의 런타임 구성 파라미터를 설정한다.
여기서는 한글 폰트인 'Malgun Gothic'(맑은 고딕)을 설정하여
그래프에 한글을 올바르게 표시할 수 있게 한다.

plt.bar(x=df_group['species'], height=df_group['body_mass_g'])

x=df_group['species']는 x축에 각 종(species)을 배치한다.

height=df_group['body_mass_g']는 높이를 각 종의 평균 몸무게(body_mass_g)로 설정한다.

plt.xlabel('Body Mass')

plt.xlabel 함수는 x축의 레이블을 설정한다.

plt.ylabel('Count')

plt.ylabel 함수는 y축의 레이블을 설정한다.

여기서는 y축 레이블을 'Count'(개수)로 설정한다.

plt.title('펭귄의 몸무게 분포')

plt.title 함수는 그래프의 제목을 설정한다.

plt.show()
plt.show()는 그려진 막대 그래프를 화면에 표시한다.

바 차트와 히스토그램 차이

바 차트 (Bar Chart)

목적: 범주형 데이터의 비교
데이터 유형: 범주형 데이터
막대의 의미: 각 막대는 하나의 범주를 나타낸다.
막대의 간격: 막대 사이에 간격이 있다.
축의 레이블: x축은 범주를, y축은 범주에 해당하는 값을 나타낸다.
예제: 특정 종의 펭귄 수를 비교하는 바 차트

히스토그램 (Histogram)

목적: 연속형 데이터의 분포 시각화
데이터 유형: 연속형 데이터
막대의 의미: 각 막대는 데이터 값의 범위를 나타낸다.
막대의 간격: 막대 사이에 간격이 없다.
축의 레이블: x축은 데이터 값의 범위(구간)를, y축은 각 구간에 속하는 데이터의 개수를 나타낸다.
예제: 펭귄의 몸무게 분포를 나타내는 히스토그램

  1. 히스토그램 그리기
plt.hist(df['body_mass_g'], bins=30)
plt.xlabel('Body Mass')
plt.ylabel('Count')
plt.title('펭귄의 몸무게 분포')
plt.show()

plt.hist(df['body_mass_g'], bins=30)

plt.hist 함수는 히스토그램을 그리는 함수이다.
히스토그램을 그릴 데이터(펭귄의 몸무게)를 지정한다.
히스토그램을 30개의 구간(bins)으로 나눈다.
(각 구간의 폭은 전체 데이터 범위를 30개로 나눈 것이다.)

profile
관심분야: 추천시스템, 자연어처리, 머신러닝, 딥러닝

0개의 댓글