오늘한 것: 총 338개 버스 중 걸린시간이 전부 있는 버스 45개를 추렸다. 이 버스의 도착시간을 먼저 예측하려 했다. 그러다 보니 자연스럽게... 버스 정류장 좌표 -> 실제 운행되고 있는 구간 -> 새롭게 구간별 거리 측정 등을 수행했다. 예측에 기반이 되는 데이터를 다시 정리했음.. 처음부터 잘할 수는 없는데 좀 더 확실한 생각을 갖고 하자는 생각이 든다. 예를 들어 버스 정류장 좌표 데이터가 3개가 있으면 이 중 어떤 것이 가장 정확한 데이터인지 나름의 이유를 갖고, 검증을 하고 진행하자. 안 그럼 3개를 다 해봐야 하고 잘못된 좌표 데이터를 선택했을 경우 = 지금의 나;; 다른 데이터로 다시 절차를 진행해야 한다. 물론 이미 했던 것이라 처음보다는 수월하지만 혼란스러움과 스트레스는 나의 몫^^ 그래도 오늘 진행한 나를 칭찬해^,^
<고유 구간 다시 만들기>
API로 노선별 경유 정류소 받기
잘 합쳐졌는지 확인
- 구간 당 마지막 정류소 1개 -> 339개의 구간에는 339개의 na 구간이 만들어짐
정류소 순서가 첫번째인데 구간이 NA인 행
버스 1-1은 차고지 -> 차고지 이동하는 버스, 중간 경유 없음 따라서 다음 정류장이 없어 NA로 만들어짐
차고지에서 경유 없이 차고지로 이동하는 것은 중간에 태우는 승객이 없다는 의미이므로 삭제. 특수한 목적에 의해 운영되는 버스로 예상함
노선별로 모든 구간이 만들어짐
총 338개 버스, 총 14066개 구간
노선별로 겹치는 구간을 삭제 후 고유 구간의 수 구하기
총 고유 구간 수: 2034
link.csv로 내보냄
<걸린시간이 전부 있는 노선>
모든 버스 338개 중 걸린시간이 전부 있는 버스는 총 46개
- 이 버스의 도착시간을 예측해보쟈
이 버스만 구간 데이터 만들기
필요한 데이터 읽기
inner join으로 ok 버스의 구간만 포함된 데이터 만들기
총 1332개의 구간이 나왔음
구해야 하는 고유 구간의 시간
총 526개
걸린시간을 매핑
<구간의 걸린시간, 거리 EDA>
데이터 타입 변환
기존 타입
걸린시간: object
timedelta 값으로 변환
timedelta: 시각(datetime) - 시각(datetime) 데이터 끼리 뺐을 때 생성되는 시간 데이터
- '구간_걸린시간' 데이터는 도착시간(시각) - 출발시간(시각) 데이터끼리 빼서 생성된 데이터
시각화로 이상치 확인
4000분 이상..? 확실한 이상치
하루 = 1440분 = 60분 X 24시간
- 하루 지났을 때 다음 날 출발 차가 다음 정류장에 도착한 시간
이상치 구분1
모든 구간에서 가장 긴 구간의 걸린 시간을 초과하는 걸린 시간!
- 가장 긴 구간?
10km가 넘는 구간 중 '의우총입구 - 강정(봉한2리방면)' 구간이 실제 11km 넘는 구간으로 확인됨
가장 긴 구간: 11251m
다른 2개의 구간은 실제 거리는 훨씬 짧았음
위도경도 다시 매핑 고려
2km(boxplot 그렸을 때 이상치 기준)가 넘는 구간은 좌표가 잘못되었을 가능성 있음
'Today I Learned' 카테고리의 다른 글
[TIL] 25.03.21 웹크롤링으로 버스 출발시간표 데이터 구하기 (0) | 2025.03.22 |
---|---|
[TIL] 25.03.19 노선, 좌표 데이터 무결성 확인 (0) | 2025.03.19 |
[TIL] 25.03.18 Geopandas를 사용하여 점 좌표를 선 좌표에 매핑하기 (0) | 2025.03.19 |
[TIL] 25.03.15 구미버스 도착시간 데이터 요청 (0) | 2025.03.15 |
[TIL] 25.03.13 API로 불러온 데이터 하나로 합치기 (0) | 2025.03.13 |