[pandas] pandas 기초(4)
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()
#air.info()
air = air.apply(pd.to_numeric) # 문자열을 숫자로 변경
air.info()
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()
air[['경기','전국']].plot()
plt.rcParams["figure.figsize"] = (10,5)
plt.show()
air.plot.scatter(x='경기', y='전국', alpha=0.5) #산점도, alpha(투명도 : 0~1)
plt.show()
- 사용 가능한 플롯 : 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()
- 각 열을 별도의 서브 플롯으로 만들기
axs = air.plot.area(figsize=(12,24), subplots=True)
plt.show()
fig, axs = plt.subplots(figsize=(20,10))
air.plot.area(ax=axs)
axs.set_ylabel("초미세먼지(PM$_2._5)$")
fig.savefig("air.png")
plt.show()
댓글남기기