본문 바로가기

Python 파이썬

파이썬 시각화

시각화 라이브러리

     - matplotlib

     - seaborn

 

데이터 준비

1) 데이터 다운로드 - 2022년 2월 서울특별시 중구 대기정보 데이터 사용

에어코리아 → 통계정보 → 최종확정 측정자료 조회 → 확정자료 다운로드 → 2022년 데이터 다운로드

https://www.airkorea.or.kr/web/last_amb_hour_data?pMENU_NO=123 

 

에어코리아 : 최종확정 측정자료 조회

최종확정 측정자료 조회

www.airkorea.or.kr

 

2) 데이터 준비

 

- 라이브러리

# 라이브러리
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

- 데이터 준비

df = pd.read_excel('C:\\Users\\User\\Python03\\에어코리아2021_2022\\2022년 2월.xlsx')

# 중구 데이터만
df1 = df[df['측정소명']=='중구']

# 중구 데이터 복사해서 test 데이터프레임 생성
test = df1.copy()

# 측정일시 컬럼을 문자열로 변환
test['측정일시'] = test['측정일시'].astype('str')

# 측정일시 컬럼 값 8자리를 추출하여 측정날짜 컬럼으로 생성
test['측정날짜'] = test['측정일시'].str[:8]

# 측정날짜 컬럼을 데이터 타입으로 변환
test['측정날짜'] = pd.to_datetime(test['측정날짜'], format=('%Y-%m-%d'))

# 측정날짜별 대기정보 총합
df2 = test.groupby('측정날짜', as_index=False)[['SO2', 'CO', 'O3', 'NO2', 'PM25']].sum()

df2.head()

=> 2022년 2월 서울특별시 중구 대기정보 데이터 사용하기 위한 전처리 과정

=> 위 데이터를 사용하여 시각화 진행

 

3) 시각화

 

   - plot()

 

# PM25 시각화

df2['PM25'].plot()

=> PM25 시각화. X축은 인덱스 Y축은 PM25 값. PM25값의  변화를 확인할 수 있다.

=> 원하는 데이터 컬럼 뒤에 .plot()을 붙이면 pandas에서 간단하게 시각화할 수 있다.

 

 

   - matplotlib()

plt.figure(figsize=(10,5))
plt.plot(df2['측정날짜'], df2['PM25'])
plt.show()

=> plt.figure(figsize=(10,5)) : 가로 10, 세로 5 크기의 그림을 만듬

(figure은 그림을 그리기 위한 크기를 정한다고 생각하면 이해하는 데 도움이 됨)

=> plt.plot(df2['측정날짜'], df2['PM25']) : X값은 측정날짜, Y값은 PM25 수치를 갖는 선 그래프

=> plt.show() : jupyter에서는 작성을 안해도 그래프가 보이지만, 다른 환경에서는 작성해줘야 그래프를 출력함. 

(마지막에 작성해주는 습관..!)

 

 

   - seaborn()

plt.figure(figsize=(10,5))
sns.lineplot(x = df2['측정날짜'], y = df2['PM25'])
plt.show()

 

=> seaborn에서 선그래프는 lineplot()임.

=> seaborn은 더 다양하게 그래프를 그릴 수 있음.

=> 한글이 깨진 것을 확인

 

*** 한글 보이게 설정, 그래프 선명하게 설정

# 폰트설정
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['axes.unicode_minus'] = False

# 그래프 선명
%config InlineBackend.figure_format = 'retina'
plt.figure(figsize=(10,5))
sns.lineplot(x = df2['측정날짜'], y = df2['PM25'])
plt.show()

=> 한글 폰트 설정과 선명하게 만드는 코드를 실행 후, sns.linplot() 재실행 결과

=> 한글 보이고, 더 선명함

 

 

-- matplotlib, seaborn에 대한 구체적인 내용은 다음 포스팅 참고