한건 샘플링하기
"""
- 여러개의 데이터를 통합하는 경우에는
- 한개 파일을 기준으로 사용할 컬럼을 정의하여 가공 후
- 반복 처리하면 편합니다.
"""
file_path = "./01_data/org/trfcard(0)/trfcard.csv"
df_bus_card_org = pd.read_csv(file_path)
df_bus_card_org.head(1)
on_date off_date route_name descr age_type trans_yn addfee_yn start_bstop start_gps_x start_gps_y end_bstop end_gps_x end_gps_y
0 20200102051049 20200102051844 131 양덕-송도-시청-양학-양덕 일반 N N 양덕차고지 129.401693 36.077258 동부초등학교 129.380866 36.062209
영문 컬럼명을 한글로 수정하기
file_path = "./01_data/org/trfcard(0)/trfcard_columns.xlsx"
df_bus_card_col_org = pd.read_excel(file_path,
header=2,
usecols="B:C")
df_bus_card_col_org.head(1)
컬럼명 (영문) 컬럼명 (한글)
0 on_date 승차시각
print(df_bus_card_col_org.iloc[0, 0])
print(df_bus_card_col_org.iloc[0, 1])
print(df_bus_card_col_org.iloc[1, 0])
print(df_bus_card_col_org.iloc[1, 1])
print("----------------------------")
print(df_bus_card_col_org.loc[0, "컬럼명 (영문)"])
print(df_bus_card_col_org.loc[0, "컬럼명 (한글)"])
on_date
승차시각
off_date
하차시각
----------------------------
on_date
승차시각
Selection deleted
df_bus_card_col_new_dict = {}
for k, v in zip(df_bus_card_col_org.iloc[:, 0], df_bus_card_col_org.iloc[:, 1]) :
df_bus_card_col_new_dict[k] = v
df_bus_card_col_new_dict
{'on_date': '승차시각',
'off_date': '하차시각',
'route_name': '노선명',
'descr': '노선설명',
'age_type': '승객연령',
'trans_yn': '환승여부',
'addfee_yn': '추가운임여부',
'start_bstop': '승차정류장',
'start_gps_x': '승차정류장 GPS X',
'start_gps_y': '승차정류장 GPS Y',
'end_bstop': '하차정류장',
'end_gps_x': '하차정류장 GPS X',
'end_gps_y': '하차정류장 GPS Y'}
df_bus_card_org.rename(columns=df_bus_card_col_new_dict, inplace=True)
df_bus_card_org.head(1)
승차시각 하차시각 노선명 노선설명 승객연령 환승여부 추가운임여부 승차정류장 승차정류장 GPS X 승차정류장 GPS Y 하차정류장 하차정류장 GPS X 하차정류장 GPS Y
0 20200102051049 20200102051844 131 양덕-송도-시청-양학-양덕 일반 N N 양덕차고지 129.401693 36.077258 동부초등학교 129.380866 36.062209
"""
<분석 주제>
- 대주제 : 포항시 버스 이용량 분석
- 소주제
(버스 이용량 분석)
* 기준월 및 기준일자별 버스 이용량 분석 비교
* 기준일 및 시간대별 버스 이용량 분석 비교
* 기준시간 및 시간(분)별 버스 이용량 분석 비교
(버스 내 체류시간 분석)
* 버스 내 체류시간
* 기준월 및 기준일자별 버스 체류시간 분석 비교
* 기준일 및 시간대별 버스 체류시간 분석 비교
* 기준시간 및 시간(분)별 버스 체류시간 분석 비교
* 승하차정류장 구간별 버스 내 체류시간
- 체류시간(분) 상위 30건 분석 비교
"""
분석을 위한 데이터 가공하기
df_bus_card_kor = df_bus_card_org.copy()
df_bus_card_kor = df_bus_card_kor.astype({"승차시각" : "str",
"하차시각" : "str"})
df_bus_card_kor.info()
--- ------ -------------- -----
0 승차시각 16185 non-null object
1 하차시각 16185 non-null object
df_bus_card = df_bus_card_kor[["승차시각", "하차시각", "승객연령", "환승여부", "추가운임여부", "승차정류장", "하차정류장"]].copy()
df_bus_card.head()
승차시각 하차시각 승객연령 환승여부 추가운임여부 승차정류장 하차정류장
0 20200102051049 20200102051844 일반 N N 양덕차고지 동부초등학교
df_bus_card["승차시각"] = pd.to_datetime(df_bus_card_kor.loc[:,"승차시각"])
df_bus_card["하차시각"] = pd.to_datetime(df_bus_card_kor.loc[:,"하차시각"])
df_bus_card.info()
--- ------ -------------- -----
0 승차시각 16185 non-null datetime64[ns]
1 하차시각 16185 non-null datetime64[ns]
round((df_bus_card.iloc[0,1] - df_bus_card.iloc[0,0]).total_seconds()/60,2)
7.92
df_bus_card["버스내체류시간(분)"] = round((df_bus_card["하차시각"] - \
df_bus_card["승차시각"]).dt.total_seconds()/60,2)
df_bus_card
승차시각 하차시각 승객연령 환승여부 추가운임여부 승차정류장 하차정류장 버스내체류시간(분)
0 2020-01-02 05:10:49 2020-01-02 05:18:44 일반 N N 양덕차고지 동부초등학교 7.92
df_bus_card["기준년도"] = df_bus_card["승차시각"].dt.year
df_bus_card["기준월"] = df_bus_card["승차시각"].dt.month
df_bus_card["기준일"] = df_bus_card["승차시각"].dt.day
df_bus_card["기준시간"] = df_bus_card["승차시각"].dt.hour
df_bus_card["기준시간(분)"] = df_bus_card["승차시각"].dt.minute
df_bus_card
승차시각 하차시각 승객연령 환승여부 추가운임여부 승차정류장 하차정류장 버스내체류시간(분) 기준년도 기준월 기준일 기준시간 기준시간(분)
0 2020-01-02 05:10:49 2020-01-02 05:18:44 일반 N N 양덕차고지 동부초등학교 7.92 2020 1 2 5 10