파이썬 입문/데이터 분석 기초
파이썬 데이터시각화 연습(1) - matplotlib 패키지 이용
explorer999
2023. 12. 17. 08:27
#1.matplotlib 패키지를 이용한 시각화
import seaborn as sns
import matplotlib.pyplot as plt # matpltlib 패키지 중에서 pyplot모듈을 plt로 불러온다.
df=sns.load_dataset('penguins')
#산점도: 날개 길이와 몸무게의 관계
plt.scatter(df['flipper_length_mm'], df['body_mass_g']) #scatter()함수는 산점도를 나타내는 함수.
#그 안에 x축(날개의 길이), y축(몸무게) 정보를 입력한다.
plt.show() #==그래프를 출력하는 함수.
#바 형 그래프: 펭귄 종별 몸무게 차이
import seaborn as sns
import matplotlib.pyplot as plt
df=sns.load_dataset('penguins')
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축(그룹화한 종), y축(그룹 몸무게의 평균)
plt.show()
#히스토그램 - 몸무게의 분포
import seaborn as sns
import matplotlib.pyplot as plt
df=sns.load_dataset('penguins')
plt.rc('font', family = 'Malgun Gothic') #한글을 나타낼 수 있는 폰트로 변경한다.
plt.hist(df['body_mass_g'], bins=30) #히스토그램에 나타내고자 하는 열 입력, 히스토그램을 몇 개의 구간으로 나눌지 입력
plt.xlabel('Body Mass') #x축과 y축 레이블에 제목으로 표시할 말 입력.
plt.ylabel('Count')
plt.title('펭귄의 몸무게 분포')
plt.show()
#선 그래프
import matplotlib.pyplot as plt
import pandas as pd
df_unrate = pd.read_csv(
) # 어디 사이트에서 제공하는 미국 실업자 데이터를 받아온다. read_csv()이용.
df_unrate.head() #---unrate는 unemployment rate의 줄임말!
df_unrate['DATE'] = pd.to_datetime(df_unrate['DATE']) #DATE열을 datetime 객체로 변환한다.
plt.plot(df_unrate['DATE'], df_unrate['VALUE']) #plot()함수는 선 그래프라는 뜻! 괄호 안에 x축 정보, y축 정보를 입력한다.
#여기서는 x축: date, y축: value
plt.show() #그래프 출력하기
#한 번에 여러 개의 그래프??== 하나의 figure(그림 그려지는 종이) 내에 여러개의 axes(그래프)그리기.
#크게 stateless API (객체지향, 정교) 방식과 stateful API(간단) 방식이 있다.
# 1. stateless 방법으로 그리기
import seaborn as sns
import matplotlib.pyplot as plt
df=sns.load_dataset('penguins')
plt.rc('font', family = 'Malgun Gothic') #(한글 폰트)
fig, axes = plt.subplots(2, 1, figsize=(10, 6))
#plt.subplots(figure 내에 "2행, 1열", figure의 가로 세로 길이는 10, 6이다.)
#그래프 1
axes[0].scatter(df['flipper_length_mm'], df['body_mass_g']) #산점도 그림.
axes[0].set_xlabel('날개 길이(mm)')
axes[0].set_ylabel('몸무게(g)')
axes[0].set_title('날개와 몸무게 간의 관계')
#그래프 2
axes[1].hist(df['body_mass_g'], bins=30) #히소토그램 그리기, bins==몇 개의 막대기?
axes[1].set_xlabel('Body Mass')
axes[1].set_ylabel('Count')
axes[1].set_title('펭귄의 몸무게 분포')
# 여백과 간격 조정
plt.subplots_adjust(left=0.1,
right=0.95,
bottom=0.1,
top=0.95,
wspace=0.5, #서브플롯들 사이의 가로 간격
hspace=0.5) #서브플롯들 사이의 세로 간격
plt.show()
# 2. Stateful방법을 사용해서 그리기
import seaborn as sns
import matplotlib.pyplot as plt
df=sns.load_dataset('penguins')
plt.rc('font', family = 'Malgun Gothic')
plt.figure(figsize=(10, 6)) #figure만들고 가로세로 길이 입력
#그래프 1
plt.subplot(2, 1, 1) #figure내에 만들 2행 1열의 axes 중 첫번째 axes를 그린다.
plt.scatter(df['flipper_length_mm'], df['body_mass_g'])
plt.xlabel('날개 길이(mm)')
plt.ylabel('몸무게(g)')
plt.title('날개와 몸무게 간의 관계')
#그래프 2
plt.subplot(2, 1, 2)
plt.hist(df['body_mass_g'], bins=30)
plt.xlabel('Body Mass')
plt.ylabel('Count')
plt.title('펭귄의 몸무게 분포')
# 여백 조정
plt.subplots_adjust(left=0.1,
right=0.95,
bottom=0.1,
top=0.95,
wspace=0.5,
hspace=0.5)
plt.show()