코딩헤딩

[데이터 분석] 교통데이터 전처리 / 시각화 (Heatmap) 본문

데이터

[데이터 분석] 교통데이터 전처리 / 시각화 (Heatmap)

멈머이 2023. 12. 1. 16:45
728x90

https://coding-heading.tistory.com/66

 

[데이터 분석] 교통데이터 수집/가공

* 데이터 출처 - URL : 국가교통 데이터 오픈마켓 1. 데이터 수집 import pandas as pd 파이썬에서 데이터를 다룰 때는 항상 pandas 라이브러리를 정의해 준다. 데이터가 폴더만 80개가 있다. 하지만 폴더

coding-heading.tistory.com

 

저번 글에서 만든 데이터 프레임을 불러오겠다.

 -  데이터 프레임 변수명 : df_bus_card_tot

df_bus_card_tot =pd.read_csv("./01_data/all/df_bus_card_tot.csv")

print("갯수 : ", len(df_bus_card_tot))
df_bus_card_tot.head(1)

개수 : 842608


1. 데이터 시각화

* 시각화 라이브러리

import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns

* 폰트 환경설정 라이브러리

from matplotlib import font_manager, rc
plt.rc("font", family = "Malgun Gothic")

 - 그래프 내에 한글이 포함된 경우 폰트 처리가 필요함
 - 한글 깨짐 방지를 위해서

### 그래프 내에 마이너스(-) 표시기호 적용하기
plt.rcParams["axes.unicode_minus"] = False

 

 

 

1) 기준월 및 기준일자별 버스 이용량 시각화 분석

 

 - 사용할 컬럼 : 기준월, 기준일, 승객연령
 - 사용할 집계함수 : count
 - 이용량 집계를 위한 함수 : pivot_table()  => 히트맵 시각화 시 데이터 생성
 - 사용할 그래프 : 히트맵(heat Map)

 

1-1) 데이터 count (집계하기)

df_pivot = df_bus_card_tot.pivot_table(index = "기준월", 
                            columns = "기준일",
                            values = "승객연령",
                            aggfunc = "count")
df_pivot

- x축 : index  /  y축 : columns  /  집계 : count(승객연령)

 

1-2) 결측치(NaN) 처리하기

df_pivot = df_pivot.fillna(0)
df_pivot

 - 모든 결측치(NaN)은 0으로 대체하기.

 

1-3) 히트맵(heatmap) 시각화

### 그래프 전체 너비, 높이 설정
plt.figure(figsize=(20,10))

### 그래프 제목 넣기
plt.title("기준월 및 기준일자별 버스 이용량 분석")

### 히트맵 그리기 : 히트맵은 seaborn라이브러리에 있다.
# - annot : False는 집계값 숨기기
#           True는 집계값 보이기
# - fmt : "0f"는 소숫점 1자리까지 보이기
# - cmap : 컬러 색상그룹
sns.heatmap(df_pivot, annot=True, fmt=".0f", cmap="rocket_r")

### 그래프 보기
plt.show()

<해석>
 - 1월~3월까지의 이용량을 분석한 결과 1월에 가장 많은 이용량을 나타내고 있으며, 2월에서 3월로 가면서 이용량이 점진적으로 줄어들고 있는 것으로 확인됨.
 - 줄어드는 이유는 포항시의 특성상 외부에서 관광객의 유입에 따라, 버스를 이용하는 사람들이 많을 것으로 예상됨.
 - 이에따라, 포항시 관광객에 대한 데이터를 수집하여 해당 년월의 데이터를 비교 분석해 볼 필요성이 있음.

 

**시각화를 해주었다면 꼭 그에 대한 해설까지 해보기!!

728x90