Data Analysis/Real Estate

서울 주요 핫플레이스(홍대입구, 건대입구, 이태원, 명동) 방문객 분석 with 지하철역 하차 인원 수

동장군님 2021. 5. 19. 11:50

코로나 여파로 이태원, 홍대, 명동을 비롯한 서울 핫플레이스 방문객이 감소하여 상권이 불황을 겪고 있다. 그래서 이번 포스팅에서는 서울 열린 데이터 광장에서 제공하고 있는 지하철역 하차 승객 수 데이터를 갖고 실제로 코로나 이전 대비해서 방문객이 얼마나 감소하였는지 분석해보도록 하겠다. 

 

Data Source:

오늘 분석에 활용한 데이터는 아래 링크와 같다.

http://data.seoul.go.kr/dataList/OA-12914/S/1/datasetView.do

 

서울시 지하철호선별 역별 승하차 인원 정보

교통카드(선후불교통카드 및 1회용 교통카드)를 이용한 지하철호선별 역별(서울교통공사, 한국철도공사, 공항철도, 9호선) 승하차인원을 나타내는 정보입니다. (일단위)
※ Sheet 서비스는 마

data.seoul.go.kr

Data 추출 코드:

import pandas as pd
import requests

data=pd.DataFrame()
api='~~~'
for i in range(2019,2022):
    if i < 2021:
        for u in range(1,13):        
            if u <10:
                date=str(i)+'0'+str(u)+'0'+'1'
            else:
                date=str(i)+str(u)+'0'+'1'
            print(date)
            url=f'http://openapi.seoul.go.kr:8088/{api}/json/CardSubwayStatsNew/1/999/{date}'
            res=requests.get(url)
            df=pd.DataFrame.from_dict(res.json()['CardSubwayStatsNew']['row'])
            df2=df[(df['SUB_STA_NM']=='건대입구') | (df['SUB_STA_NM']=='홍대입구')| (df['SUB_STA_NM']=='이태원') | (df['SUB_STA_NM']=='명동')]
            data=data.append(df2)
    else:
        for u in range(1,5):        
            if u <10:
                date=str(i)+'0'+str(u)+'0'+'1'
            else:
                date=str(i)+str(u)+'0'+'1'
                
            print(date)
            url=f'http://openapi.seoul.go.kr:8088/{api}/json/CardSubwayStatsNew/1/999/{date}'
            res=requests.get(url)
            df=pd.DataFrame.from_dict(res.json()['CardSubwayStatsNew']['row'])
            df2=df[(df['SUB_STA_NM']=='건대입구') | (df['SUB_STA_NM']=='홍대입구')| (df['SUB_STA_NM']=='이태원') | (df['SUB_STA_NM']=='명동')]
            data=data.append(df2)
dfa=pd.DataFrame(data.groupby(['USE_DT','SUB_STA_NM']).sum()['ALIGHT_PASGR_NUM']).reset_index()
dfa.columns=['Date','Station','Alight']
dfa['Date']=dfa['Date'].apply(lambda x:x[2:6])

위 코드가 문제 없이 돌아간다면 아래와 같이 월, 지하철역별 일 평균 하차 인원수 데이터를 확인할 수 있을 것이다. 

 

Data Visualization:

마지막은 Plotly를 통해서 위에서 뽑은 데이터를 시각화하도록 하겠다.

 

import plotly.express as px

dfa['Station']=dfa['Station'].str.replace('건대입구','Kondae')
dfa['Station']=dfa['Station'].str.replace('홍대입구','Hongdae')
dfa['Station']=dfa['Station'].str.replace('이태원','Itaewon')
dfa['Station']=dfa['Station'].str.replace('명동','Myungdong')

df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(dfa, x="Date", y="Alight", color='Station')
fig.show()

 

전반적으로 홍대, 건대, 명동, 이태원 모든 역에서 코로나 이전 대비 큰 폭으로 감소된 부분을 볼 수 있다. 특히 대학과 상권이 같이 있는 홍대의 감소 폭이 두드러지게 나타나고 있다. 그나마 21년 들어서 방문객 수가 조금씩 반등하고 있는 모습을 보이고는 있지만 19년 최고점 대비해서는 절반 수준에 불과한 상황이다.