일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 데이터
- MariaDB
- 파이썬
- 데이터전처리
- 선형회기모델
- pythone
- Deep Learning
- 정확도
- 예측
- tensorflow
- 시각화
- 데이터 가공
- 데이터 수집
- 회귀모델
- 훈련
- 데이터 분석
- 알고리즘기초
- python기초
- HeidiSQL
- 데이터베이스
- Database
- 해석
- 크롤링(crawling)
- keras
- 딥러닝
- python
- sklearn
- pandas
- 머신러닝
- SQL예제
- Today
- Total
코딩헤딩
[데이터 분석] 교통데이터 전처리 / 시각화 (막대그래프, Histplot) 본문
https://coding-heading.tistory.com/66
[데이터 분석] 교통데이터 수집/가공
* 데이터 출처 - URL : 국가교통 데이터 오픈마켓 1. 데이터 수집 import pandas as pd 파이썬에서 데이터를 다룰 때는 항상 pandas 라이브러리를 정의해 준다. 데이터가 폴더만 80개가 있다. 하지만 폴더
coding-heading.tistory.com
### 시각화 라이브러리
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
저번 글에서 만든 데이터 프레임을 불러오겠다.
- 데이터 프레임 변수명 : 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. 필요한 데이터 : 기준시간, 승객연련, 버스내체휴시간(분)
df_temp = pd.DataFrame()
df_temp["기준시간"] = df_bus_card_tot["기준시간"]
df_temp["승객구분"] = df_bus_card_tot["승객연령"]
df_temp["버스내체류시간"] = df_bus_card_tot["버스내채류시간(분)"]
df_temp
우선 시각화하는데 필요한 데이터만 가져왔다.
2. 그룹화하기
df_temp["승객구분"].value_counts()
df_temp2 = df_temp.groupby(["기준시간","승객구분"], as_index=False).sum()
df_temp2 = df_temp2.sort_values(by=["버스내체류시간"], ascending=False)
df_temp2
* groupby() 이후의 head()의 역할
- 그룹단위로 조화됨
- head(1) : 각 그룹의 첫 번째 값을 조회시킴
group by가 적용되면 head(0)은 없다 각 그룹에 첫 번째만 뽑아온다.
3. 그래프 시각화 하기
fig = plt.figure(figsize=(25,10))
plt.title("시간 및 승객구분별 버스내 채류시간(분단위) 분석")
sns.barplot(x="기준시간", y="버스내체류시간", hue="승객구분", data=df_temp2)
plt.show()
* hue : x축 및 y축을 기준으로 비교할 대상 컬럼 지정(범주형 데이터를 보통 사용)
- 시간 및 승객구분별 버스 내 채류시간(분단위) 분석 (histplot 시각화)
- 밀도 그래프라고도 함.
plt.figure(figsize=(12,4))
plt.title("시간 및 승객구분별 버스내 채류시간(분단위) 분석")
sns.histplot(data = df_temp2,
x = "기준시간",
### 사용할 막대의 최대 갯수
bins = 30,
### 막대그래프에밀도 선그리기
kde = True,
### 범주 데이터
hue = "승객구분",
### 여러 범주를 하나의 막대에 표현하기
multiple = "stack",
### 비율로 표시
stat = "density",
### 막대 너비 : 0.6은 원본 100% 사이즈에서 60%축소한 너비사이즈
shrink=0.6)
plt.show()
- 승하차정류장별 버스내 체류시간(분) 상위 30건 시각화 분석
1. 구간(승차정류장~하차정류장) 별 버스 내 체류시간(분) sum() (그룹화) 하기
- 내림차순 정렬
- 상위 30개 추출
df_temp3 = pd.DataFrame()
df_temp3["승하차정류장"] = df_bus_card_tot["승차정류장"] + "==>" + \
df_bus_card_tot["하차정류장"]
df_temp3["버스내체류시간"] = df_bus_card_tot["버스내채류시간(분)"]
df_temp3
2. 승하차정류장별 체류시간 그룹화하기
df_temp_gp = df_temp3.groupby(["승하차정류장"], as_index=False).sum()
df_temp_gp = df_temp_gp.sort_values(by=["버스내체류시간"], ascending=False)
3. 상위 30건 추출하기
df_temp_30 = df_temp_gp.head(30)
df_temp_30
- 구간별 채류시간이 가장 긴 상위 30개가 나온다.
4. 시각화하기
plt.figure(figsize=(12,4))
plt.title("승하차정류장별 버스내 체류시간 분석")
### 선그래프
plt.plot(df_temp_30["승하차정류장"], df_temp_30["버스내체류시간"])
# - x축 y축 제목넣기
plt.xlabel("승하차정류장")
plt.ylabel("버스내체류시간(분)")
### x축의 값의 기울기를 이용하여 조정하기
# - xticks() : x축을 컨트롤 하는 함수
plt.xticks(rotation=90)
### 격자 표시하기
plt.grid(True)
plt.show()
'데이터' 카테고리의 다른 글
[데이터 분석] DB프로그램 예제(class 생성하여 조회/입력/수정 처리) (2) | 2023.12.02 |
---|---|
[데이터 분석] 교통데이터 전처리 / 시각화 (Heatmap) (0) | 2023.12.01 |
[데이터 분석] 교통데이터 수집/가공 (2) | 2023.11.30 |
[데이터 분석] 데이터 조회하기 / 입력, 수정, 삭제 / 커서, 커넥션 (1) | 2023.11.29 |
[데이터 분석] 데이터 테이블에 저장하기 (0) | 2023.11.29 |