프로그래밍/Pandas

[Pandas] 데이터 시각화 | Matplotlib | 그래프 꾸미기

LeeSeunghyuk 2021. 1. 11. 15:44
반응형

Oracle SQL

 

데이터 분석에서 다루는 데이터의 종류는 매우 다양합니다.

따라서 다양한 종류에 따라 알맞은 시각화 방법을 알아야 합니다.

 

Matplotlib 모듈은 평면 그래프에 대한 다양한 포맷, 시각화 기능을 제공합니다.

 

 

# 선 그래프 

import pandas as pd
import matplotlib.pyplot as plt
## 데이터 전처리

df=pd.read_excel('d:\\판다스 실습\\인구수데이터.xlsx')
df.fillna(method='ffill',inplace=True)
mask=(df['전출지별']=='서울특별시') &(df['전입지별']!='서울특별시')
df2=df[mask]
df2.drop('전출지별',axis=1,inplace=True)
df2.rename({'전입지별':'전입지'},axis=1,inplace=True)
df2.set_index('전입지',inplace=True)

data=df2.loc['경기도']

plt.rcParams["figure.figsize"] = (14,4) # 그래프 크기
plt.rc('font',size=15)                  # 글씨 크기
plt.xticks(rotation=90)                 # x축 글씨 회전
plt.plot(data.index,data.values)

 

Matplotlib 역시 기본 그래프는 판다스 내장 그래프와 같이

라인 그래프 입니다.

 

# 제목(title), 축 이름(label) 달기

 

plt.xticks(rotation=90)
plt.title('인구 이동')
plt.xlabel('년도')
plt.ylabel('이동수')
plt.plot(data.index,data.values)
plt.show()

 

한글로 지정하면 오류가 발생합니다.

해결하는 방법은 올려 두었습니다!

 

## Matplotlib 한글 오류 해결하기

 

# 범례(legned) 달기

 

범례는 plt.plot으로 그래프를 그리는 코드 이후

내용과 위치를 작성합니다

 

plt.xticks(rotation=90)
plt.title('인구 이동')
plt.xlabel('년도')
plt.ylabel('이동수')

plt.plot(data.index,data.values)
# 범례
plt.legend(labels=['서울->경기'],loc='best')

plt.show()

 

# 그래프 여러 개  나눠 그리기 (axe)

 

여러개의 화면으로 분할해 그래프를 그리는 방법입니다.

여러 개의 axe 객체를 만들고, 분할된 화면마다 axe 객체를 하나씩 배정합니다.

 

1. figure() 함수로 그림 틀 만들기

2. figsize 옵션으로 크기 설정하기

3. fig 객체의 add_subplot 메소드 사용해 그림틀 분할

 

나눠진 각 부분 -> axe

 

fig=plt.figure(figsize=(10,10))
ax1=fig.add_subplot(1,2,1) # 1행 2열의 그래프 중 1번째 (1,1)
ax2=fig.add_subplot(1,2,2) # 1행 2열의 그래프 중 2번째 (1,2)

ax1.plot(data.iloc[0:24],'o')
ax2.plot(data.iloc[25:],marker='s',markerfacecolor='red')

 

 

# 하나의 그래프에 여러 데이터 그리기

 

같은 화면에 그래프를 추가할 수도 있습니다.

 

df2.replace('-',0,inplace=True)
df2=df2.loc[['경기도','충청남도','대구광역시']]

plt.figure(figsize=(15,5))


plt.plot(df2.columns,df2.loc['경기도',:],marker='o',markerfacecolor='red',label='서울->경기')
plt.plot(df2.columns,df2.loc['충청남도',:],marker='o',markerfacecolor='blue',label='서울->충남')
plt.plot(df2.columns,df2.loc['대구광역시',:],marker='o',markerfacecolor='green',label='서울->대구')

plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

 

# Matplotlib 꾸미기 옵션

 

선 그래프를 꾸미는 옵션입니다!

 

'o' : 점 그래프로 변환

marker='ㅇ' : 마커의 모양 ('o', '+', '*' ....)

markerfacecolor=green : 마커의 색상

markersize=5 : 마커의 크기

color = 'blue' : 선의 색상

linewidth=10 : 선의 두께

label='서울->경기' 범례, 라벨 지정

 

 

# Matplotlib 스타일 바꾸기

 

Matplotlib 그래프는 여러가지 스타일이 있습니다.

스타일을 확인하는 방법입니다.

plt.style.available

스타일을 적용해 보겠습니다 'ggplot'

 

df2.replace('-',0,inplace=True)
df2=df2.loc[['경기도','충청남도','대구광역시']]

plt.style.use('ggplot')

plt.figure(figsize=(15,5))


plt.plot(df2.columns,df2.loc['경기도',:],marker='o',markerfacecolor='red',label='서울->경기')
plt.plot(df2.columns,df2.loc['충청남도',:],marker='o',markerfacecolor='blue',label='서울->충남')
plt.plot(df2.columns,df2.loc['대구광역시',:],marker='o',markerfacecolor='green',label='서울->대구')

plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

 

 

# Matplotlib 색 종류 확인하기

 

그래프를 그릴 때 사용할 수 있는 색상의 종류 입니다.

다양한 색상이 존재하고, 이를 확인하는 코드입니다!.

 

import matplotlib
matplotlib.colors.cnames.keys()

반응형