pandas에서 데이터 시각화

  • 홈페이지 : https://pandas.pydata.org/
    위 홈페이지의 문서를 보며 정리한 내용입니다.

1. Matplotlib

  • 파이썬에서 정적, 애니메이션 및 대화형 시각화를 만들기 위한 포괄적인 라이브러리.

  • 설치 : pip install matplotlib
  • https://matplotlib.org/

  • MATLAB : 수치 해석 및 프로그래밍 환경을 제공하는 공학용 SW. 행렬을 기반으로 한 계산 기능을 지원, 함수나 데이터를 그림으로 그리는 기능 등

  • Matplotlib : 파이썬에서 자료를 차트나 플롯으로 시각화하는 패키지.

  • pyplot 서브 패키지 : MATLAB과 비슷하게 명령어 스타일로 동작하는 함수의 모음. 각각의 함수를 사용해서 간단하게 그래프 등을 만듦.

2. 에어코리아

  • 시도별대기정보 : https://www.airkorea.or.kr/web/sidoQualityCompare?itemCode=10008&pMENU_NO=102
  • PM2.5 : 초미세먼지
  • 0 ~ 15 : 좋음
  • 16 ~ 35 : 보통
  • 36 ~ 75 : 나쁨
  • 76 ~ 500 : 매우나쁨
  • sidoAirInfo.xlsx 다운로드 : https://docs.google.com/spreadsheets/d/1-4HW_AsSn9TTHxPRpdTevuISRZvSTZU-/edit?usp=share_link&ouid=104318132675038675780&rtpof=true&sd=true
import pandas as pd
import matplotlib.pyplot as plt

xlsx_file = '/content/drive/MyDrive/Colab Notebooks/sidoAirInfo.xlsx'
air = pd.read_excel(xlsx_file, index_col=0, parse_dates=True)
#air = air.loc[3:]
air.columns = ['전국', '서울', '부산', '대구', '인천', '광주', '대전', 
               '울산', '경기', '강원', '충북', '충남', '전북', '전남', 
               '경북', '경남', '제주', '세종']

air = air.drop(['PM2.5 시도별 대기정보', '날짜']) # 행의 이름으로 제거
air = air.dropna(how = 'all') # 모든 값이 전부 NaN인 행만 제거
air.head()

image

#air.info()
air = air.apply(pd.to_numeric) # 문자열을 숫자로 변경
air.info()

image

3. 나눔폰트 설치

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
plt.rc('font', family='NanumBarunGothic')
air.plot()
plt.rcParams["figure.figsize"] = (20,8)
plt.show()

image

air[['경기','전국']].plot()
plt.rcParams["figure.figsize"] = (10,5)
plt.show()

image

air.plot.scatter(x='경기', y='전국', alpha=0.5) #산점도, alpha(투명도 : 0~1)
plt.show()

image

  • 사용 가능한 플롯 : https://pandas.pydata.org/docs/user_guide/visualization.html#visualization-other
[ method_name for method_name in dir(air.plot)
  if not method_name.startswith("_")]
['area',
 'bar',
 'barh',
 'box',
 'density',
 'hexbin',
 'hist',
 'kde',
 'line',
 'pie',
 'scatter']  
air.plot.box()
plt.show()

image

  • 각 열을 별도의 서브 플롯으로 만들기
axs = air.plot.area(figsize=(12,24), subplots=True)
plt.show()

image image

fig, axs = plt.subplots(figsize=(20,10))
air.plot.area(ax=axs)
axs.set_ylabel("초미세먼지(PM$_2._5)$")
fig.savefig("air.png")
plt.show()

image

카테고리:

업데이트:

댓글남기기