3. 대책 수립

3.1 최적의 통학 시간대 파악

이전의 분석을 통해 지하철의 혼잡한 시간대를 파악할 수 있었습니다. 지금부터는 평균 혼잡도와의 편차로 변환하여 최적의 지하철 통학 시간대를 찾아보도록 하겠습니다

3.1.1 집 -> 학교

집에서 학교로 통학하는 경우를 확인해보겠습니다. 학교로 통학하는 길에 2호선(내선)과 1호선(상선)을 이용하게 되는데 네이버 지도를 기준으로 약 55분이 소요됩니다. 도보 25분 + 2호선 5분 + 1호선 19분 정도로 실질적으로 지하철을 이용하는 시간은 25분 정도입니다. 지하철 환승 시간과 대기 시간을 포함한다면 최대 35분으로  할 수 있습니다.

분석에 사용된 데이터를 살펴보면 30분 단위로 혼잡도를 나타내고 있습니다. 정각을 기준으로 30분 간격인데 실제 지하철 이용 시간이 35분이기 때문에 복잡한 경우의 수 없이 분석이 가능할 것으로 생각됩니다. 우선, 집에서 학교로 가는 경로에 해당하는 2호선(내선)과 1호선(상선) 데이터를 결합하도록 하겠습니다. weekday_toschool과 weekend_toschool 각각은 주중과 주말 학교로 가는 노선을 나타낸다고 할 수 있습니다. 

# 집에서 학교로 이동하는 경우를 분석하기 위해 2호선(내선)과 1호선(상선) 데이터를 결합하겠습니다. 
weekday_toschool = df_wd_up_1.join(df_wd_in_2).T
weekend_toschool = df_we_up_1.join(df_we_in_2).T

데이터 조작이 용이하도록 인덱스를 리셋하였습니다.

# 데이터프레임 조작이 용이하도록 인덱스 리셋 
weekday_toschool = weekday_toschool.reset_index(drop=True)
weekend_toschool = weekend_toschool.reset_index(drop=True)

1호선과 2호선의 혼잡도를 더하여 혼잡도 합계(Total) 행을 추가하고 혼잡도 합계의 평균을 mean 변수에 저장하도록 하겠습니다. 그리고 평균을 통해 각 시간대별 혼잡도 합계의 편차를 구하여 혼잡도 편차(Deviate) 행을 추가하겠습니다. 

# 시간대별 평균 혼잡도, 혼잡도 편차 집계
weekday_toschool.loc['Total', :] = weekday_toschool.sum()
mean = weekday_toschool.loc['Total', :].mean()
print('주중 혼잡도 평균: ', mean)
weekday_toschool.loc['Deviate', :] = weekday_toschool.loc['Total', :] - mean

# 시간대별 평균 혼잡도, 혼잡도 편차 집계
weekend_toschool.loc['Total', :] = weekend_toschool.sum()
mean = weekend_toschool.loc['Total', :].mean()
print('주말 혼잡도 평균: ', mean)
weekend_toschool.loc['Deviate', :] = weekend_toschool.loc['Total', :] - mean

위에서 구한 편차(Deviate) 행을 가지고 시각적으로 비교가 가능하도록 편차 그래프를 그려보겠습니다. 지하철 이용 시간대를 결정하기 위해서는 시간 제약 조건을 고려해야 하기 때문에 주중 혼잡도 편차 그래프에 학교 수업 시간대를 점선으로 추가하였습니다.

## 주중 집 -> 학교 지하철 혼잡도 편차 그래프 ##
a = weekday_toschool.loc['Deviate', :].plot.bar(figsize = (20, 5), rot = 60, color='#ff7f0e') # 편차 행에 대한 바그래프
a.set_title('주중 혼잡도 편차 (집 -> 학교)', fontweight = 'semibold')
a.set_xlabel('시간')
a.set_ylabel('혼잡도 편차')

axis_range = a.axis() # 축 정보
a.axvline(19, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.axvline(19, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.axvline(26, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.text(21, axis_range[3] - 10, '수업 시간대', fontweight = 'semibold')

plt.show()
## 주말 집 -> 학교 지하철 혼잡도 편차 그래프 ##
a = weekend_toschool.loc['Deviate', :].plot.bar(figsize = (20, 5), rot = 60, color='#ff7f0e') # 편차 행에 대한 바그래프
a.set_title('주말 혼잡도 편차 (집 -> 학교)', fontweight = 'semibold')
a.set_xlabel('시간')
a.set_ylabel('혼잡도 편차')

plt.show()

주중, 주말 혼잡도 편차 그래프를 그려보면 아래와 같이 나타나게 됩니다. 

3.1.2 학교 -> 집

학교에서 집으로 가는 경우도 위와 유사하기 때문에 추가적인 설명 없이 지나가도록 하겠습니다. 집에서 학교로 가는 경우와 반대로 1호선(하선)과 2호선(외선)을 이용하게 되며 동일하게 약 55분 소요됩니다. 지하철을 이용하는 시간 또한 35분으로 비슷하기 때문에 전반적인 분석 과정도 앞 절과 동일하다고 할 수 있습니다.

# 학교에서 집으로 이동하는 경우를 분석하기 위해 1호선(하선)과 2호선(외선) 데이터를 결합
weekday_tohome = df_wd_down_1.join(df_wd_out_2).T
weekend_tohome = df_we_down_1.join(df_we_out_2).T

# 인덱스 리셋
weekday_tohome = weekday_tohome.reset_index(drop=True)
weekend_tohome = weekend_tohome.reset_index(drop=True)

# 시간대별 전체 혼잡도, 혼잡도 편차 집계
weekday_tohome.loc['Total', :] = weekday_tohome.sum()
mean = weekday_tohome.loc['Total', :].mean()
print('주중 혼잡도 평균: ', mean)
weekday_tohome.loc['Deviate', :] = weekday_tohome.loc['Total', :] - mean

# 시간대별 전체 혼잡도, 혼잡도 편차 집계
weekend_tohome.loc['Total', :] = weekend_tohome.sum() # Total
mean = weekend_tohome.loc['Total', :].mean()
print('주말 혼잡도 평균: ', mean)
weekend_tohome.loc['Deviate', :] = weekend_tohome.loc['Total', :] - mean
## 주말 학교 -> 집 지하철 혼잡도 편차 그래프 ##
a = weekday_tohome.loc['Deviate', :].plot.bar(figsize = (20, 5), rot = 60, color='#d62728')
a.set_title('from 학교 to 집 평일 혼잡도 편차', fontweight = 'semibold')
a.set_xlabel('시간')
a.set_ylabel('혼잡도 편차')

axis_range = a.axis() # 축 정보
a.axvline(19, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.axvline(19, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.axvline(26, axis_range[2], axis_range[3], color='red', linestyle='--', linewidth=2)
a.text(21, axis_range[3] - 10, '수업 시간대', fontweight = 'semibold')

plt.show()
## 주말 학교 -> 집 지하철 혼잡도 편차 그래프 ##
a = weekend_tohome.loc['Deviate', :].plot.bar(figsize = (20, 5), rot = 60, color='#d62728')
a.set_title('from 학교 to 집 주말 혼잡도 편차', fontweight = 'semibold')
a.set_xlabel('시간')
a.set_ylabel('혼잡도 편차')

plt.show()

위의 코드를 통해 아래와 같은 그래프를 그려볼 수 있습니다. 

3.2 지하철 이용 계획 수립

위에서 도출한 편차 그래프를 통해 최적의 지하철 통학 시간대를 파악해보겠습니다. 오렌지 색깔로 된 그래프는 집에서 학교로 통학하는 경우이며 아래 빨간색 그래프는 학교에서 집으로 가는 경우입니다. 

3.2.1 주중 지하철 통학 스케줄

기상 시간을 고려했을 때 최소 7시부터 집에서 출발이 가능합니다. 7시 이후부터 수업시간대인 14시 30분 전까지 가장 혼잡도가 낮은 시간대는 아침 10시 경입니다. 10시에서 10시 30분 사이에 지하철을 이용하는 것이 가장 합리적으로 보입니다. 한편, 학교에서 집으로 올 때에는 18시 30분부터 혼잡도가 급격히 하락하긴 하지만 20시 30분에서 21시 사이에 지하철을 이용하는 것이 최선으로 생각됩니다. 

3.3.2 주말 지하철 통학 스케줄

출근 시간대를 기점으로 피크를 찍고 내려오는 주중과 달리 주말에는 혼잡도가 점심 시간대까지 지속적으로 증가하는 것을 볼 수 있습니다. 따라서, 가능하다면 일찍 출발할수록 더 유리하다고 할 수 있습니다. 하지만 8시를 기점으로 혼잡도가 급격히 증가하기 때문에 8시 직전인 7시 30분 정도가 가장 최적의 시간대라고 할 수 있습니다. 반대로 학교에서 집으로 돌아올 때에는 19시 이후에 지하철을 이용하는 것이 좋으며 21시가 가장 좋은 선택이 될 것으로 보입니다. 

 

+ Recent posts