Skip to content

대중교통 빅데이터 산출과정을 담은 프로세스

Notifications You must be signed in to change notification settings

jaesi/transportation-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

교통카드 데이터 관련 프로세스 (Transportation Data Pipeline)

개요

  • 한국교통안전공단 데이터 안심구역에서 제공된 수도권 교통카드 일별 이용 이력을 수집·가공해 각종 데이터로 산출하는 프로젝트입니다.
  • This project transforms secured metropolitan smart-card logs into a reproducible commute OD pipeline covering ingestion, validation, clustering, aggregation, and grid enrichment.

데이터 범위 Data Scope

  • 처리 기간: 2025년 1월~6월
  • 기준 데이터: 2024년 7월 집계 결과
  • 원천: TS 데이터 안심구역 TB_KTS_DWTCD_METROPOLITAN 및 TB_KTS_STTN CSV.
  • Processing window: Jan–Jun 2025 (baseline checks aligned to Jul 2024 outputs)
  • Sources: TS secure-zone exports TB_KTS_DWTCD_METROPOLITAN and TB_KTS_STTN CSV dumps.

산출 데이터

1. 데이터 상품

  • 새마을금고
    • 대중교통 출퇴근 데이터 (통근OD)
    • 대중교통 체류시간 데이터

2. 내부 연구용·플랫폼용 데이터

  • 일별/시간대별 집계 데이터
  • 통학OD 데이터

디렉토리 구조

transportation-data/
├── airflow/                  # 인 하우스 자동화 dag 프로세스 (통근OD, 체류시간)
├── data_safety_zone/         # 안심구역 내부 프로세스 코드
│   ├── admin/                # 안심구역 관련 유틸 코드
│   ├── stay_time/            # 안심구역 - 체류시간 산출 코드
│   └── work_od/              # 안심구역 - 통근OD 산출 코드
├── research/                 # 연구용으로 상품화되지 않고 진행된 프로세스
│   ├── daily_hourly_agg/     # 일별/시간대별 집계 산출 코드
│   ├── school_commute_od/    # 통학OD 산출 코드 
│   ├── stay_time/            # 체류시간 산출 코드(노트북)
│   └── work_od/              # 통근OD 산출 코드(노트북 및 202407 산출 버전)
├── README.md
├── .gitignore                
└── .env                      # 사용자 직접 작성 환경변수

통근 OD 파이프라인 Work_OD Pipeline

[import_data CSVs 🚍]
      │
      ▼
(step1) Daily purpose aggregation → parquet
      │
      ▼
(step2) Residence / office time-window split
      │
      ▼
(step3) Coordinate swap correction
      │
      ▼
(step4) Valid-card batching
      │
      ▼
(step5) DBSCAN clustering (home / work)
      │
      ▼
(step6) Card mapping merge → card_id_work_od_mapping.parquet
      │
      ▼
(step7) Monthly OD validation stats
      │
      ▼
(step8) Monthly OD aggregation metrics
      │
      ▼
(step9) Station cleansing + grid tagging
      │
      ▼
(step10) Grid-enriched work OD parquet → downstream _output

주요 단계 Key Stages

  1. 원시 CSV 적재
    • Daily Purpose Aggregation — DuckDB COPY로 일별 목적 통행 테이블을 구축합니다
      (Load raw CSVs via DuckDB to produce daily purpose trips).
  2. 시간창 분리
    • Time-Window Split — 평일 오전/저녁 통근 구간을 residence·office 윈도우로 분리합니다
      (Generate residence/office slices for commute hours).
  3. 좌표 보정
    • Coordinate Fix — 센서 오류로 뒤바뀐 X/Y를 재정렬하고 정정 현황을 기록합니다
      (Swap incorrect coordinates and log corrections).
  4. 유효 카드 추출
    • Valid Card Assignment — residence·office 양측에서 충분한 통행이 있는 카드만 남기고 배치 ID를 할당합니다
      (Filter active cards and assign batch IDs).
  5. 클러스터링
    • DBSCAN — EPSG:5179 좌표계로 변환 후 DBSCAN으로 주거·직장 후보 정류장을 탐색합니다
      (Cluster home/work stops in projected space).
  6. 배치 병합
    • Batch Merge — 각 배치 결과를 통합해 card_id_work_od_mapping.parquet을 생성합니다
      (Merge batch outputs into the mapping parquet).
  7. 통근 검증
    • Commute Validation — 카드 매핑과 목적 통행을 교차해 월별 통근 건수를 검증합니다
      (Cross-check monthly OD counts with confidence thresholds).
  8. 통계 집계
    • Aggregation — 통근 OD를 집계해 건수·체류시간·이동시간 통계를 만듭니다
      (Aggregate commute metrics such as trip counts and durations).
  9. 정류장 정제
    • Station Cleansing — 정류장 좌표를 5179로 변환하고 to_grid_vec 함수로 격자 ID를 부여합니다
      (Cleanse station coordinates and attach grid IDs).
  10. 그리드 조인
    • Grid Join — OD 통계를 정제된 정류장·격자 데이터와 결합해 최종 산출물을 만듭니다
      (Join OD statistics with station grids for delivery).

기술 스택 Tech Stack

Python DuckDB pandas scikit‑learn Parquet

구분 Category 구성 요소 Stack 주요 활용 Purpose
데이터베이스 / OLAP DuckDB 0.10+ 고속 CSV 적재, SQL 기반 집계, Parquet 출력
언어 / 런타임 Python 3.12 전체 파이프라인 스크립팅, 가상환경 실행
데이터 처리 pandas · numpy 데이터 정제, 윈도우링, 결과 검증
공간 분석 scikit-learn (DBSCAN) 주거·직장 후보 정류장 군집화
스토리지 / 포맷 Parquet (ZSTD) 증분 저장, 후속 분석 및 공유
실행 환경 PowerShell, 가상환경 배치 실행 및 자동화 스케줄링

실행 Execution

  • PowerShell 또는 가상환경에서 python version_2/step1_run_monthly_purpose_batch.py 등 단계별 스크립트를 순차 실행합니다.
  • config.py에서 경로·배치 크기·DBSCAN 하이퍼파라미터를 조정할 수 있습니다.
  • 중간 출력은 output/ 하위 폴더에 parquet 형식으로 저장되며, DuckDB 뷰어나 pandas로 검증할 수 있습니다.

문서 및 참고 References

  • Notion 요약(진행 로그 및 상세 산출물) 👉 Notion Link
  • 추가 문의는 프로젝트 메인 노트북 및 step 스크립트 상단 주석을 참고하세요.

About

대중교통 빅데이터 산출과정을 담은 프로세스

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published