시나리오
###[버스 이용량 분석] count
# 1. 기준월 및 기준일자별 버스 이용량 분석 비교
# 2. 기준일 및 기준시간대별 버스 이용량 분석 비교
# 3. 기준시간 및 시간(분)별 버스 이용량 분석 비교
### [버스 내 체류 시간] 새로운 컬럼 : 하차시각 - 승차시각
# 1. 기준일 및 시간대별 버스내 체류시간(분) 분석비교
# 2. 시간대별 승객구분별 버스내 체류시간(분) 분석비교
# 3. 시간 및 승객구분별 빈도분석 비교
### [승하차정류장별 버스내 체류시간] 새로운 컬럼 : 승차+하차 정류장
# 1. 승하차정류장별 버스내 체류시간(분) 상위 30건 비교분석
df_bus_card_kor.info()
# int(정수) 타입은 년월일로 분류 불가
승차시각 및 하차시각 타입 변환하기 : 문자형태로
df_bus_card_kor = df_bus_card_kor.astype({"승차시각" : "str"})
df_bus_card_kor = df_bus_card_kor.astype({"하차시각" : "str"})
df_bus_card_kor.info()
분석에 필요한 요소(컬럼)을 별도 데이터프레임으로 추출
df_bus_cart = pd.DataFrame()
df_bus_cart["승차시각"] = pd.to_datetime(df_bus_card_kor["승차시각"])
df_bus_cart["하차시각"] = pd.to_datetime(df_bus_card_kor["하차시각"])
df_bus_cart["승객구분"] = df_bus_card_kor["승객연령"]
df_bus_cart["추가운임여부"] = df_bus_card_kor["추가운임여부"]
df_bus_cart["승차정류장"] = df_bus_card_kor["승차정류장"]
df_bus_cart["하차정류장"] = df_bus_card_kor["하차정류장"]
df_bus_cart
체류시간 컬럼 생성하기
체류시간 = 하차시간 - 승차시간
df_bus_cart["버스내 체류시간(분)"] = \
(df_bus_cart["하차시각"]\
- df_bus_cart["승차시각"]).astype("timedelta64[m]").astype(int) #m(분) 단위로 뽑아내겠다
df_bus_cart.info()
df_bus_cart.describe()
기준년도, 기준월, 기준일, 기준시간, 기준시간(분) 컬럼생성
df_bus_cart["기준년도"] = df_bus_cart["승차시각"].dt.year
df_bus_cart["기준월"] = df_bus_cart["승차시각"].dt.month
df_bus_cart["기준일"] = df_bus_cart["승차시각"].dt.day
df_bus_cart["기준시간"] = df_bus_cart["승차시각"].dt.hour
df_bus_cart["기준시간(분)"] = df_bus_cart["승차시각"].dt.minute
df_bus_cart
모든 데이터 통합하기
위에서 했던 과정을 for문을 사용하여 0번부터 79번 폴더까지 반복실행합니다.
from datetime import datetime
## 실행시간 체크하기
#- 시작 시간
start_date = datetime.today().strftime("%Y-%m-%d %H:%M:%S")
### 최종 통합 데이터를 저장할 데이터프레임
df_bus_card_tot = pd.DataFrame()
### 아래 데이터 통합 프로그래밍 하기..
for i in range(0 ,80, 1):
### 1. 파일 읽어들이기
file_path = "./01_data_원본/trfcard ({})/trfcard.csv".format(i)
df_bus_card_org = pd.read_csv(file_path)
file_path = "./01_data_원본/trfcard ({})/trfcard_columns.xlsx".format(i)
df_bus_card_col_org = pd.read_excel(file_path,
header = 2,
usecols = "B:C")
### 영문 칼럼명을 한글로 변환하기
# 딕셔너리 만들기1 - for문 이용
df_bus_card_col_new_dict = {}
for k, v in zip(df_bus_card_col_org["컬럼명 (영문)"],
df_bus_card_col_org["컬럼명 (한글)"]) :
df_bus_card_col_new_dict[k] = v
#원본데이터를 한글컬럼으보 바꾸기
df_bus_card_kor = df_bus_card_org.rename(columns = df_bus_card_col_new_dict)
### 채류시간(분) 칼럼추가하기
# 승차시각 및 하차시각 타입변환하기 : 문자형태로
df_bus_card_kor = df_bus_card_kor.astype({"승차시각" : "str"})
df_bus_card_kor = df_bus_card_kor.astype({"하차시각" : "str"})
### 분석에 필요한 요소(컬럼)을 별도 데이터프레임으로 추출하기
df_bus_cart = pd.DataFrame()
df_bus_cart["승차시각"] = pd.to_datetime(df_bus_card_kor["승차시각"])
df_bus_cart["하차시각"] = pd.to_datetime(df_bus_card_kor["하차시각"])
df_bus_cart["환승여부"] = df_bus_card_kor["환승여부"]
df_bus_cart["승객구분"] = df_bus_card_kor["승객연령"]
df_bus_cart["추가운임여부"] = df_bus_card_kor["추가운임여부"]
df_bus_cart["승차정류장"] = df_bus_card_kor["승차정류장"]
df_bus_cart["하차정류장"] = df_bus_card_kor["하차정류장"]
df_bus_cart["버스내 체류시간(분)"] = \
(df_bus_cart["하차시각"]\
- df_bus_cart["승차시각"]).astype("timedelta64[m]").astype(int)
### 기준년도, 기준월, 기준일, 기준시간, 기준시간(분) 컬럼생성
df_bus_cart["기준년도"] = df_bus_cart["승차시각"].dt.year
df_bus_cart["기준월"] = df_bus_cart["승차시각"].dt.month
df_bus_cart["기준일"] = df_bus_cart["승차시각"].dt.day
df_bus_cart["기준시간"] = df_bus_cart["승차시각"].dt.hour
df_bus_cart["기준시간(분)"] = df_bus_cart["승차시각"].dt.minute
### 통합하기
# igonore_index=True : 기존의 인덱스 번호에 이어서 자동 증가시키기
df_bus_card_tot = pd.concat([df_bus_card_tot,df_bus_cart], ignore_index=True)
#- 종료 시간
end_date = datetime.today().strftime("%Y-%m-%d %H:%M:%S")
print("전체 시작~종료 시간 = ({}) ~ ({})".format(start_date, end_date))
print("전체 데이터 행수 = ", len(df_bus_card_tot))
df_bus_card_tot
통합본 파일로 저장하기
### 통합본 파일로 저장하기
df_bus_card_tot.to_csv("./02_data_통합본/df_bus_tot.csv", index = None)
'머신러닝 > 프로젝트' 카테고리의 다른 글
버스교통카드데이터 (데이터시각화) (0) | 2024.03.27 |
---|---|
버스교통데이터 (데이터전처리)(1) (0) | 2024.03.21 |
머신러닝을 이용한 프로젝트 - 세종시 어울링 수요 예측 (0) | 2023.08.23 |