분석을 배우고 싶은데 실제 출동·점검 데이터를 쓰기엔 개인정보가 걸립니다. 이 안내서는 실데이터 없이 분석 레시피를 끝까지 연습하도록 합성 데이터를 만드는 방법입니다. 같은 seed면 항상 똑같은 CSV가 나와, 시연과 테스트에 안정적으로 쓸 수 있습니다.
이 안내서를 끝내면 출동·점검 합성 CSV를 만들어 분석을 연습하고, 합성 데이터도 검산해야 하며 공개 시 합성임을 표시해야 한다는 것을 알게 됩니다.
실행
표준 라이브러리만 쓰므로 설치가 필요 없습니다.
BASH
python generate.py python generate.py --rows-dispatch 10000 --seed 7
인자 없이 실행하면 출동 5,000행·점검 2,000행을 만듭니다. --seed가 같으면 결과도 같습니다.
규칙이 박힌 합성
아무 값이나 채우지 않고, 업무 규칙을 코드에 담습니다. 예를 들어 점검 결과는 불량 항목 수로 갈립니다.
PYTHON
result = "적합" if failed == 0 else ("현지시정" if failed <= 2 else "시정명령")
그리고 재점검일은 "시정명령"일 때만 채워집니다.
PYTHON
"reinspection_due": (d + timedelta(days=30)).isoformat() if result == "시정명령" else "",
생성된 데이터는 합성임이 드러나는 ID를 씁니다(SYN-2025-000001). 지명·소방서도 전부 가상입니다.
TEXT
incident_id,reported_at,incident_type,station,district,response_time_sec SYN-2025-000001,2025-08-08 23:16,화재,솔뫼소방서,다온동,389
합성도 검산합니다
합성 데이터라도 흐름이 맞는지 검산합니다. 특히 규칙이 지켜졌는지 봅니다.
TEXT
[출동 검산] incident_id 중복 / reported_at 변환 실패 / response_time_sec 범위(60~1800) / 집계 합 = 전체 행 수 [점검 검산] items_failed > items_checked 행 0 / 시정명령인데 reinspection_due 빈 행 0 / 적합인데 items_failed가 0이 아닌 행 0
▸ 소방 활용 포인트
신규 직원 시연이나 새 레시피 테스트에 실데이터 대신 합성 데이터를 쓰면 개인정보 사고가 원천 차단됩니다. 단, 공개할 때는 "합성 데이터"라는 표시와 생성 조건(명령·seed)을 반드시 함께 남깁니다.공개할 때 붙이는 표시
합성 데이터로 만든 표·차트를 공개하면, 다음 문구 중 하나를 붙입니다.
TEXT
이 표는 119 Fire AI Studio의 합성 데이터로 만든 교육용 예시입니다. 실제 사건, 실제 주소, 실제 기관 통계를 나타내지 않습니다.
⚠️ 흔한 실수
합성 데이터로 다음을 하면 안 됩니다 — 실제 기관 성과 설명, 특정 지역 위험도 판단, 출동 기준시간 평가, 민원 답변의 사실 근거, 그리고 실제 자료를 "조금 바꾼 것"과 섞기. 분포는 단순화한 설정값이라 현실을 대표하지 않습니다.