파이썬 입문/데이터 분석 기초

파이썬 데이터시각화 연습(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()