[TIL] 25.03.21 웹크롤링으로 버스 출발시간표 데이터 구하기
·
Today I Learned
오늘 한 것: 출발 시간표 크롤링 - 걸린시간이 전부 있는 버스 40개의 도착 예정 시간을 구하려고 하니.. 출발 시간 데이터가 없었다.. 평일, 주말에 언제언제 기점에서 출발하는 시간이다. 그래서 구미 BIS(버스시스템) 홈페이지에서 크롤링을 할 수 밖에 없었다프로세스크게 3가지 단계웹 드라이버 생성 -> HTML 태그에서 정보 찾아서 리스트에 담기 -> 시간표 웹 사이트로 이동해서 정보 크롤링 자세히는 9가지 단계이다.셀레니움으로 웹드라이버 생성(나 대신 웹페이지 열어서 크롤링 해줄 친구)웹페이지 HTML에서 모든 버스 노선 찾기버스 노선별로 시간표로 들어가는 URL 찾기(웹페이지 한 번 더 열어야 시간표 확인 가능)버스별로 번호, 주요경유지, 시간표 URL, filename 만들기시간표 수집함수 정..
[TIL] 25.03.20 구미 정류소 좌표 데이터 다시 정리
·
Today I Learned
오늘한 것: 총 338개 버스 중 걸린시간이 전부 있는 버스 45개를 추렸다. 이 버스의 도착시간을 먼저 예측하려 했다. 그러다 보니 자연스럽게... 버스 정류장 좌표 -> 실제 운행되고 있는 구간 -> 새롭게 구간별 거리 측정 등을 수행했다. 예측에 기반이 되는 데이터를 다시 정리했음.. 처음부터 잘할 수는 없는데 좀 더 확실한 생각을 갖고 하자는 생각이 든다. 예를 들어 버스 정류장 좌표 데이터가 3개가 있으면 이 중 어떤 것이 가장 정확한 데이터인지 나름의 이유를 갖고, 검증을 하고 진행하자. 안 그럼 3개를 다 해봐야 하고 잘못된 좌표 데이터를 선택했을 경우 = 지금의 나;; 다른 데이터로 다시 절차를 진행해야 한다. 물론 이미 했던 것이라 처음보다는 수월하지만 혼란스러움과 스트레스는 나의 몫^^..
[TIL] 25.03.19 노선, 좌표 데이터 무결성 확인
·
Today I Learned
PrologueTmap API를 통해 하루에 추출할 수 있는 데이터가 1,000건이다. 그래서 이틀에 걸쳐 모든 구간의 좌표 데이터를 얻었다. 그리고 이 구간의 좌표와 신호등, 보호구역의 좌표를 일치시켰다. 구간의 좌표들 중 반경 10m이내에 포함된다면 신호등 또는 보호구역을 그 구간 내에 있다고 매핑한 것이다. 또한 버스와 정류장 좌표의 무결성을 확인해서 데이터 신뢰성을 높였다. 이 과정에서 좌표가 정말정말 중요하구나, 그러니까 데이터의 무결성이 정말 중요하구나를 느꼈다.노선과 좌표 데이터 무결성 확인배경위도경도가 맞지 않는 구간이 보임..다시 확인데이터 확인TAGO(국토교통부 버스정보종합 기관)에 유선으로 문의한 결과,API로 추출하는 4개 데이터는 매일 업데이트 되고 있음을 확인가장 아래 2개는 ..
[TIL] 25.03.18 Geopandas를 사용하여 점 좌표를 선 좌표에 매핑하기
·
Today I Learned
Prologue오늘한 것: 구간별 좌표 리스트 출력, 신호등 좌표와 매핑, , 엔터티 구성 및 ERD, Postgre SQL 3문제 / 내가 실행해봤던 것들, 작은 것들을 꾸준히 남기자..!구간별 좌표 리스트 출력신호등 데이터 확보데이터출처: 공공데이터포털, 전국신호등표준데이터이름: 구미시 신호등 표준 데이터설명: 『도로교통법』에 따라 교통안전확보 또는 원활한 교통흐름을 제어하기 위해 진행, 정지, 주의, 회전 등을 지시하도록 설치된 신호등에 대한 정보제공기관: 구미시청제공방식: CSV 다운로드수정일자: 2025-03-10관리부서 전화번호: 054-480-2573데이터 EDA소셜포커스, 양우일, 적색점멸ㆍ황색점멸… 신호등에 숨은 비밀은?, 2020.03구간의 여러 개 좌표와 신호등의 좌표를 매핑할 수 있..
[TIL] 25.03.15 구미버스 도착시간 데이터 요청
·
Today I Learned
Prologue오늘한 것: PostgreSQL 5문제, 버스 노선 내 구간의 걸린시간 데이터 결측치 확인 및 구미시청에 요청도착시간이 없는 구간의 도착 시간 데이터 구미시청에 요청가지고 있는 버스 로그 데이터로 모든 구간의 걸린시간을 구할 수 있을 줄 알았다.그러나..구미시 모든 버스 -> 버스가 경유하는 정류장 목록 -> 정류장-정류장 사이 = 구간 -> 모든 구간으로 모든 구간별 구간의 걸린시간을 매핑했을 때 걸린시간이 없는 구간이 있었다.총 11,000개 구간 중 1,100개 구간이 그랬다.버스 노선 320개 중에서는 290개 버스 노선이 걸린시간이 빈 구간이 있었다.예상보다 많은 버스 노선에서 걸린시간이 없는 구간이 확인됐을 때 불안했다.어떡하지.. 프로젝트 접어야 하나..? 하는 생각도 들었다...
[TIL] 25.03.13 API로 불러온 데이터 하나로 합치기
·
Today I Learned
Prologue오늘한 것: PostgreSQL 4문제 풀기, 구미 버스 노선 및 노선의 경유지 목록 불러오기구미 버스 노선 목록 가져오기출처구미 버스 노선번호목록 조회서비스 키와 요청 변수를 넣고 API 사용받은 json 파일을 dictionary 파일로 파싱dictionary 파일과 리스트 파일에 각각 대괄호-키(키를 통한 접근), 대괄호-숫자(인덱싱)를 사용해 접근리스트로 감싸져 있는 딕셔너리들을 DF로 변환데이터 가독성을 위해 컬럼명 한글 변환Null값 확인과 삭제CSV로 내보내기노선별 구간 만들기첫번째 노선을 기준으로 생각해보기주의할 점과 어떻게 하나의 df로 만들지 생각for 반복문을 통해 생각을 구현잘 concat되었는지 확인na의 개수가 맞는지 확인na값을 삭제: 구간 데이터만 필요필요한 컬..