파이썬으로 데이터 주무르기 스터디&응용

Chapter2 -4. '기후 동행 카드' 잠재적 수요자 예측하기

꿀복피그 2024. 1. 22. 18:40

 

안녕하세요! 오늘은 제가 학기 중에 팀플로 진행했던 프로젝트에서

데이터를 전처리하는 방법에 대해 소개하기 위해

찾아왔습니다!

지금까지 데이터를 전처리하는 방법 및 시각화하는 방법에 대해 배웠는데

이번 시간엔 지금까지 배운 방법들을 응용하는 차원에서

데이터를 전처리하는 방법에 대해 포스팅하는 시간을 가질거예요~

 

먼저 제가 진행한 프로젝트에 대해 간단한 소개 후에 데이터를 전처리하는 방법에 대해 알려드리도록 할게요.

 

기후 동행 카드란?

: 2024년 1월 23일에 판매 시작하여 서울특별시 내에서 대중교통과 따릉이를 월 65,000원에 무제한으로 이용할 수 있는 카드이다. 
단, 기후 동행 카드는 서울시에 승차하여 서울시와 타 지역에서 하차하는 것은 가능하나, 타 지역에서 승차하여 서울시에 하차하는 것은 불가하다는 것이 특징이다.


위에서 소개해드린 것처럼 기후 동행 카드는 서울시에서 거주하는 시민들에게는 이득이지만 타지역에서 서울로 들어올 때는 적용이 안 된다는 점에서 이른바 '반쪽짜리 카드' 라는 말이 나오기도 했습니다. 

이에 과연 기후 동행 카드가 실용적인 것인지 알아보기 위해 서울시의 지하철 OD 데이터를 통해 승하차 인원을 분류하여 서울시에서 수도권으로 승하차하는 인원의 비율을 공간적으로 알아보았습니다. 

그럼, 오늘은 데이터를 전처리하는 과정을 거치도록 하겠습니다. 오늘 데이터를 전처리하는 과정에는 지난 시간에 배운 QGIS를 사용하는 부분도 잠깐 나오니까 주의깊게 봐주세요~ 그럼 레쓰고!

 

 

1. 데이터 가져오기

  • 공공데이터포털에서 서울특별시_지하철 역별 OD 데이터를 다운받는다.
  • 변수명 station_name 에 read_csv() 명령을 통해 해당 파일을 불러온다.
  • 서울교통공사에서 서울시 지하철 경위도 좌표 데이터를 다운받는다.
  • 변수명 station_loc에 read_csv() 명령을 통해 해당 파일을 불러온다.

 

2. 두 데이터 합치기

  • 변수명 data_result 에 merge()함수를 통해 '승차_역' 칼럼을 기준으로 두 데이터를 하나의 표에 합친다. 
  • 이때, 경위도 좌표가 없거나 두 칼럼의 승차역명이 일치하지 않는 승차역이 있기 때문에 how 키워드를 통해 station_name 표에 기준을 맞춰서 표를 합쳐준다.
  • NaN이 값에 다수 생길텐데, 이를 처리해주기 위해 dropna() 명령을 통해 해당열을 제거해준다.
  • 널값을 제거한 표는 cleaned_result 변수명에 to_csv() 명령을 통해 저장한다.
  • 경위도 좌표가 없는 역은 나중에 따로 처리해서 합쳐주기 위해 isna() 명령을 통해 리스트를 받아놓는다.

역명이 달라서 합쳐지지 않는 역 리스트 일부

 

3. QGIS를 통해 역 구분해주기

 

QGIS의 points in polygon 을 통해 서울시 행정구역 내에 있는 승하차역과 서울시 밖의 수도권 내에 있는 승하차역을 구분해줄 것이다.

  • 이전 포스팅을 참고하여, 서울시 shp 파일과 null값을 제거한 지하철 경위도 파일을 레이어에 올린다. (모두 벡터 레이어 추가로 올린다.)
  • 공간 처리 툴박스에 들어가서 벡터 선택에서 위치로 선택을 클릭한다. 
  • 위치로 선택에서 선택 대상이 되는 데이터는 역별 경위도 좌표 데이터를 선택하고 비교 데이터는 서울시 shp 파일을 선택한다. 
  • 선택 유형은 교차를 선택하고 실행한다.

  • 서울시 내에 속하는 지하철 역들만 노란색으로 선택이 되어있는데 지하철 경위도 좌표를 레이어에서 우클릭하여 export - 선택한 객체를 다른 이름으로 저장을 눌러 저장한다.

  • 저장 후, 지하철 경위도 좌표 레이어를 우클릭하여 속성 테이블 열기에 들어간다. 상단의 선택 반전을 클릭하고 창을 닫는다.

  • 이제는 서울시에 속하지 않는 지하철 역들만 노란색으로 선택되어있는데 이전과 같은 방법으로 레이어에서 우클릭하여 export - 선택한 객체를 다른 이름으로 저장을 눌러 저장한다.

(좌)not Seoul (우) Seoul 해당하는 역들이 선택된 모습

 

 

4. 추출한 데이터 불러와서 역명 확인하기

  • 서울 내의 역과 서울 밖의 역을 저장한 파일을 판다스로 불러온다.
  • unique() 명령을 통해 '승차_역' 칼럼에 있는 지하철역명을 확인하여 서울시 내에 포함된 역과 서울시 밖의 역을 확인한다. 

(좌)서울시 포함 역명 리스트 일부 (우)서울시 외곽 역명 리스트 일부

 

 

자! 여러분 여기까지 따라오느라 고생하셨습니다.

대략적인 전처리 과정을 보여드렸는데 어떤가요?

생각보다 간편하지 않나요?

그럼 다음 시간에 또 만나요! 꿀