서울 지하철 하차 인원 분석

출근 시간대 지하철 역의 하차 인원 데이터를 분석하여, 어느 역으로 출근하는 인원이 많이 늘고 있는지 알아 보겠습니다. 챗GPT를 활용한 입문 수준의 데이터 분석이며, 데이터 전처리와 시각화의 내용을 담고자 합니다. 이 분석을 위해서는 챗GPT 4.0(유료 버전)이 필요합니다.




데이터 수집

공공 데이터 포털인 data.go.kr에 가서 ‘서울시 지하철 시간대’로 검색하고, 검색 결과에서 아래 파일의 ‘바로가기’를 누릅니다. 수정일이 2021년으로 되어 있지만, 최신 정보까지 들어 있습니다.



새로운 창이 열리면 아래로 스크롤하여 ‘내려받기(CSV)’를 선택합니다. 파일이 다운로드됩니다.



챗GPT의 데이터 분석 GPT 띄우기

GPTs는 챗GPT의 메뉴의 하나입니다. 챗GPT를 바탕으로 하되 특정 분야나 기능에 특화되도록 사전에 세부적으로 설정된 도구입니다. GPTs를 사용하면 챗GPT의 기본 프롬프트를 사용하는 것보다 특정 작업에 대해 더 정확하고 효율적인 답변을 얻을 수 있습니다. 데이터 분석을 위해 챗GPT 화면 상단의 ‘Explore GPTs’를 클릭합니다.



화면이 바뀌면 아래로 스크롤하여 ‘Data Analyst’를 선택합니다.



아래와 같은 창이 뜨면 이제 챗GPT로 데이터 분석을 할 준비가 된 것입니다.




데이터 분석


Data Analyst GPT는 링크를 읽어오지 못하기 때문에 파일을 업로드해 주어야 합니다. 파일을 마우스로 대화창에 끌어다 놓거나, 위 스크린샷에서 보이는 클립 버튼을 누른 뒤 선택해도 됩니다.


먼저 파일을 읽고 내용을 요약해 달라고 합니다. 한글 인코딩 방식 때문에 일시적으로 에러가 나지만 알아서 처리하고 파일을 읽습니다.



단순 데이터 분석이고 시각화가 주 목적이라서 전처리와 EDA가 큰 의미는 없습니다. 결측치와 이상치만 확인해 봅니다. 결측치는 없고, 이상치는 처리하지 않고 넘어가 보겠습니다.



데이터 분석에 앞서서 처리할 일이 하나 있습니다. 지하철 역 중 환승역은 데이터가 여러 행으로 쪼개져 있기 때문에 하나로 합치고 분석을 시작해야 합니다. 예를 들어 건대입구 역은 2호선 데이터 따로, 7호선 데이터가 따로 들어가 있어서 하나로 합쳐야 정확한 분석이 됩니다.



엑셀로 처리하면 꽤 난이도가 있는 작업인데, 챗GPT는 간단히 처리해 냅니다.

처리 결과가 맞는지 한 행 데이터를 보여달라고 해서 확인합니다. 합치지 않고 합쳤다고 한다든지, 모든 기간을 하나로 합친다든지 하는 일이 일어날 수 있기 때문에 꼭 확인해야 합니다. 엑셀이나 구글 스프레드쉬트로 데이터 파일을 열어 놓고 비교 검증하세요.



역별로 최근 3개월(2023.11월~2024.1월)과 전년 동기(2022.11월~2023.1월)의 하차 인원을 비교하여 증가 인원이 가장 많은 역 10곳을 추려 냅니다. 최근 1개월만으로 할 수도 있고, 최근 1년과 전년 동기 비교로 할 수도 있습니다. 짧게 하면 변화를 빨리 감지할 수 있고, 길게 하면 일시적 변동에 흔들리지 않을 수 있습니다.

. . .


이 10개 역들에 대해 최근 3년간 월별 하차 인원 그래프를 그려서 추세를 보겠습니다. 월별 그래프를 그려 달라고 하면 x축 값을 제대로 못 잡는 경우가 대부분입니다. 이럴 때는 ‘x축에는 2021.2월, 2021.3월, 2021.4월....처럼 월이 와야해’와 같이 구체적으로 알려줘야 합니다. 또한 그래프를 그리라고 하면 항상 비슷한 계열의 색상을 써서 지표들 간의 구별이 되지 않게 그리는데 그럴 때는 다양한 색상을 사용하여 다시 그려달라고 하면 됩니다.


한 달 전쯤에 그려 달라고 했을 때는 역 10개 중 8개만 그리고, 2개는 그리지 않았는데, 이제 10개를 모두 잘 그립니다. 다행입니다.



최근 3개월간 하차 인원 증가 수가 가장 많은 역 10개를 추려 내고, 3년 치 데이터로 월별 그래프를 그렸으니 주된 목표는 달성했습니다. 과거에 대한 데이터를 얻었으니, 이제 미래 예측을 해봅니다. 예측에 큰 의미를 부여하지는 않습니다만, 어떻게 예측할지 궁금하기도 합니다. 향후 3개월 하차 인원을 알려 달라고 합니다.

. . .



이 예측 결과를 어떤 지표로 평가할 수 있는지 물어보니 평균 절대 오차(MAE: Mean Absolute Error), 평균 제곱 오차(MSE: Mean Squared Error), 제곱근 평균 제곱 오차(RMSE: Root Mean Squared Error) 등을 알려줍니다. 제곱근 평균 제곱 오차로 평가해 달라고 합니다. 비교할 실제값이 없어서 최근 3개월 값을 테스트셋으로 사용하고, 모델을 그 이전까지 데이터만으로 다시 학습시켜서 RMSE를 구해봐 달라고 합니다.



앞서 그렸던 그래프에 3개월 예측치까지 포함하여 그래프를 다시 그려달라고 합니다.



마지막으로, 결과에 대해 의견을 물어봅니다.

위 답변 6번의 팬데믹 이후 사무실 복귀 관련하여 아래 그래프도 결과 해석에 참조할 만합니다. 위에서 소개한 세션에는 나오지 않는 내용이며, 준비 과정에서 그렸던 그래프인데, 전체 역에 대해서 2015-2024 기간의 하차 인원을 보여주고 있습니다. 가산디지털 단지, 강남역, 광화문 등에 새로운 일자리가 생겨서 출근시간 하차 인원이 증가한 것인지, 재택 근무가 종료되어 복귀하는 인원이 많은 것인지는 다른 방법으로 추가 분석이 필요해 보입니다.



결과 정리 및 시사점

  1. 데이터 전처리와 시각화가 어렵지 않게 가능합니다. 챗GPT의 대화 이해 능력과 기술적 데이터 분석 능력이 결합하여 사용하기 편리한 서비스가 만들어지고 있습니다. 데이터 분석의 장벽을 많이 낮춰줄 수 있으리라 기대됩니다.

  2. 다만, ‘역명이 같은 데이터 합치기’ 부분에서 언급하였듯이 의사소통이 제대로 안 되어 챗GPT가 사용자 의도와 다르게 데이터 처리를 할 가능성이 있습니다. 중요한 데이터를 처리할 때는 꼼꼼한 점검이 필요합니다.

  3. 그래프를 그릴 때 한글이 완전하게 처리되지 않아 아쉬움이 있습니다. 한글 폰트를 업로드하는 등의 방법으로 일정 부분 해결 가능하지만, 불안정합니다. 향후 개선되어 기본 제공 되기를 기대합니다. (그래프에서의 한글 처리 문제에 대해서는 이어지는 글 ‘Seaborn을 활용한 건강검진 데이터 시각화’에서 보다 자세히 다룹니다.)

7

👉 이 게시글도 읽어보세요