서울 지하철 승하차 인원 분석 프로젝트



서울 지하철 승하차 인원 분석 프로젝트

서울의 지하철 시스템은 매일 수많은 승객들이 이용하는 중요한 대중교통 수단입니다. 본 프로젝트에서는 서울시 지하철 호선별 승하차 인원 데이터를 분석하여 어떤 역이 가장 혼잡한지를 파악하고자 합니다. 특히, 코로나19 이후 혼잡도를 피하고자 하는 승객들에게 유용한 정보를 제공하는 것을 목표로 합니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

프로젝트 개요

이 프로젝트는 서울 열린 데이터 광장에서 제공하는 승하차 인원 데이터를 기반으로 진행됩니다. 데이터는 2015년부터 2021년까지 수집된 자료로, 2021년 6월의 데이터를 중심으로 분석합니다. 이를 통해 특정 호선에서의 승객 수를 확인하고, 혼잡한 역을 시각적으로 확인할 수 있도록 합니다.



 

👉 ✅ 상세 정보 바로 확인 👈

 

데이터 읽기

데이터 불러오기

분석을 위해 필요한 패키지를 설치하고, pandas를 사용하여 CSV 파일로부터 데이터를 읽어옵니다.

“`python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

metro_all = pd.read_csv(“./data/서울시 지하철 호선별 역별 승하차 인원 정보_20210705.csv”, encoding=’cp949′)
“`

데이터 확인하기

불러온 데이터의 구조와 내용을 확인하여, 필요한 정보가 제대로 로드되었는지 검증합니다.

python
print(metro_all.head())
print(metro_all.info())

데이터 정제

최근 데이터 추출

2021년 6월의 승하차 인원 데이터만 추출하기 위해 필요한 컬럼을 정리합니다.

python
metro_recent = metro_all[metro_all['사용월'] == 202106].drop(columns=['작업일자'])

데이터 시각화

호선별 이용객 수 출력

각 호선에서의 평균 승하차 인원 수를 시각화하여, 이용객 수가 많은 호선을 확인합니다.

“`python
metro_line = metro_recent.groupby([‘호선명’]).mean().reset_index()
metro_line = metro_line.drop(columns=’사용월’).set_index(‘호선명’).mean(axis=1).sort_values(ascending=False)

plt.figure(figsize=(20, 10))
metro_line.plot(kind=’bar’)
plt.title(‘호선별 평균 승하차 인원 수’)
plt.show()
“`

특정 호선에서 역별 평균 승하차 인원 데이터 추출

이용객 수가 가장 많은 2호선 기준으로 각 역의 평균 승하차 인원 데이터를 추출합니다.

python
line = '2호선'
metro_st = metro_recent.groupby(['호선명', '지하철역']).mean().reset_index()
metro_st_line2 = metro_st[metro_st['호선명'] == line]

평균 승하차 인원 수 내림차순으로 막대그래프 출력

2호선의 평균 승차 인원 수를 기준으로 상위 10개 역을 시각화합니다.

python
top10_on = df.sort_values(by='평균 승차 인원 수', ascending=False).head(10)
plt.bar(top10_on.index, top10_on['평균 승차 인원 수'])
plt.title('2021년 6월 평균 승차 인원 수 Top10')
plt.show()

혼잡도 및 위치 좌표 데이터 병합

특정 호선에 대한 혼잡도를 시각적으로 나타내기 위해, 지하철 역의 위치 좌표 데이터를 추가합니다. 이를 위해 카카오 API를 활용하여 CSV 파일을 준비합니다.

데이터 병합

지하철 역별 평균 승하차 인원 수와 위치 좌표 데이터를 병합하여 새로운 데이터를 만듭니다.

“`python
subway_location = pd.read_csv(‘./data/지하철 역 위치 좌표.csv’)

def get_nums_and_location(line, metro_st):
# 데이터 추출 및 병합 로직

return df

df = get_nums_and_location(‘6호선’, metro_st)
“`

지하철 역 혼잡도를 지도에 출력

Folium을 사용하여 특정 호선의 각 역을 원형 마커로 지도에 표시합니다.

“`python
import folium

map_osm = folium.Map(location=[37.529622, 126.984307], zoom_start=13)

for i in df.index:
marker = folium.CircleMarker([df[‘x좌표’][i], df[‘y좌표’][i]],
radius=(df[‘평균 승차 인원 수’][i]+1)/3000,
popup=[df[‘지하철역’][i], df[‘평균 승차 인원 수’][i]],
color=’blue’,
fill_color=’blue’)
marker.add_to(map_osm)

map_osm
“`

자주 묻는 질문

1. 6호선의 지하철 역 중 승차 인원수가 가장 많은 역은 어디인가요?

지하철 역의 데이터를 분석하여, 6호선에서 승차 인원이 가장 많은 역을 확인할 수 있습니다.

2. 강남역의 좌표는 어떻게 구하나요?

지하철 역의 좌표는 위치 좌표 데이터와 병합하여 쉽게 확인할 수 있습니다.

본 프로젝트를 통해 서울 지하철의 혼잡도를 분석하고, 승객들이 보다 스마트하게 대중교통을 이용할 수 있도록 돕는 유용한 데이터를 제공하고자 하였습니다.

이전 글: 희귀동전 년도 및 가격표 안내