서울시 취약시간대 의료 접근성 문제를 완화하기 위해 공공심야약국 후보 입지를 분석한 프로젝트입니다. 2022 서울시 빅데이터 캠퍼스 멘토링 3기에서 수행했고, 공간 데이터 전처리, 의료 취약도 가중치 산정, MCLP(Maximal Covering Location Problem) 기반 입지 최적화, 보조적인 머신러닝 분석 결과를 함께 보관합니다.
- 문제 정의: 심야 시간대 의약품 접근이 어려운 서울 지역에서 공공심야약국 후보 입지를 찾기
- 핵심 방법
- 주소/좌표 정제 및 공간 전처리
- 생활인구·취약계층·의료인력·약국 소비 데이터 결합
- 의료가중지수 산정
ortools+spaghetti기반 MCLP 모델링- XGBoost 기반 보조 피처 중요도 확인
- 주요 산출물
report/final-report.pdf: 최종 보고서figures/: 분석 결과 그림 모음PreprocessData/: 전처리 완료 데이터- 서울/제주 실험 노트북 일체
.
├── notebooks/
│ ├── 1.Seoul_Preprocess.ipynb # 서울 심야약국/일반약국/편의점 전처리
│ ├── 2.Seoul_Juso_KakaoAPI.ipynb # 주소 → 좌표 변환 실험
│ ├── 3.Seoul_MCLP.ipynb # 서울 MCLP 핵심 실험
│ ├── 4.Seoul_MCLP 2.ipynb # 추가 MCLP 실험
│ ├── 5.MLCP EXAMPLE.ipynb # MCLP 예시 및 변형 실험
│ ├── 6.유동인구데이터전처리.ipynb # 생활인구 전처리
│ ├── 7.Seoul_ML.ipynb # XGBoost 기반 보조 분석
│ └── 9. 서울시빅캠전처리.ipynb # 의료가중지수 산정 및 시각화
├── artifacts/ # 전처리 중간 산출물(B049/B055/가중치 등)
├── PreprocessData/ # 전처리 결과 CSV
├── DataSet/ # 원본/공간 데이터 일부
├── figures/ # README용 결과 이미지 및 시각화 산출물
├── report/
│ └── final-report.pdf # 최종 제출 보고서
├── references/ # 정책/연구 참고 문헌 PDF
└── 제주시 코드 (참고)/ # 제주도 확장 실험 및 참고 코드
notebooks/1.Seoul_Preprocess.ipynbnotebooks/2.Seoul_Juso_KakaoAPI.ipynbnotebooks/6.유동인구데이터전처리.ipynb- 서울 약국/편의점/행정구역 데이터를 좌표계까지 맞춰서 정리합니다.
notebooks/9. 서울시빅캠전처리.ipynb- 고령자, 장애, 기초생활, 약국 소비 등 취약도 지표를 합쳐 행정동 단위 가중치를 만듭니다.
notebooks/3.Seoul_MCLP.ipynbnotebooks/4.Seoul_MCLP 2.ipynbnotebooks/5.MLCP EXAMPLE.ipynb- 도로 네트워크와 후보 시설을 연결해 MCLP로 커버리지를 최대화합니다.
notebooks/7.Seoul_ML.ipynb- 전처리된 최종 데이터에서 XGBoost로 중요 피처를 확인해 취약시간 의료 수요 특성을 보조적으로 해석합니다.
| 분포 확인 | 모형 산출 예시 |
|---|---|
![]() |
![]() |
이 프로젝트는 노트북 중심으로 진행되어 파일 경로가 완전히 일관적이지 않습니다. 정리 작업으로 서울 노트북은 notebooks/, 중간 산출물은 artifacts/로 이동했습니다.
PreprocessData/의 CSV는 여러 노트북에서 공통 입력으로 사용됩니다.artifacts/에는B049.txt,B055.txt,가중치.csv,가중치2.csv같은 전처리 중간 산출물을 모아 두었습니다.- 일부 노트북은 여전히 저장소에 포함되지 않은 원본 공공데이터를 전제로 합니다.
- 제주 참고 노트북은 기존 구조를 유지해 별도 정리 대상으로 남겨 두었습니다.
기본 패키지:
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
pip install -r requirements2.txt주요 라이브러리:
pandas,numpy,scipygeopandas,shapely,fiona,pyproj,rtreelibpysal,spaghetti,ortoolsmatplotlib,seabornxgboost,tensorflow
제주시 코드 (참고)/api.py는 주소를 좌표로 바꾸는 간단한 헬퍼입니다. 이제 하드코딩된 키 대신 환경변수를 사용합니다.
$env:KAKAO_REST_API_KEY="your-rest-api-key"
python "제주시 코드 (참고)/api.py"- 최종 보고서:
report/final-report.pdf - 정책/연구 참고 문헌:
references/
- 서울시 안전상비의약품 판매업소 위치
- 서울시 응급실 위치
- 서울시 약국 위치
- 전국 심야약국 정보 e-gen
- 서울시 공공 야간약국 운영 안내
- 서울특별시 공공 야간·휴일 일차의료 활성화 지원 조례 소개
- 김수빈 — 경희대학교 소프트웨어융합학과
- 박재훈 — 경희대학교 소프트웨어융합학과
- 정다영 — 경희대학교 소프트웨어융합학과
- 최인열 — 경희대학교 소프트웨어융합학과
이 저장소는 패키지형 애플리케이션이 아니라 대회 분석 아카이브에 가깝습니다. 재현성보다 당시 실험 과정과 결과 보존에 무게가 있으므로, 노트북 실행 전 파일 경로와 입력 데이터 존재 여부를 먼저 확인하는 편이 좋습니다.



