데이터는 모았다고 끝이 아니었다 — 10만 명 건강 데이터를 다시 쌓고 검증을 끝까지 시킨 하루

📚 「AI 헬스케어 파이널 프로젝트」 연재 5편입니다. (4편: 기획엔 살을 붙이고, 모르는 기술은 분해해서)

표지

📝 한줄 요약

1편에서 데이터를 잔뜩 모았지만, 막상 모델에 쓰려니 “제대로 쓸 수 있는 상태”가 아니었습니다. 미국·한국 데이터가 섞여 있고, 같은 항목인데 조사 회차마다 이름이 달라 군데군데 비어 있었거든요. 그래서 한국 데이터(KNHANES, 국민건강영양조사)만으로 원시 자료부터 10만 명이 넘는 통합 데이터를 다시 쌓고, AI에게 검증을 끝까지 시켰습니다. 덤으로 타겟을 시니어(40세 이상)까지 넓혔어요.

바쁘시면 이것만 읽어도 돼요:

  • 깨달은 점: 데이터는 “모으면 끝”이 아니라 “정제하고 검증해야 비로소 쓸 수 있다”
  • 함정: 같은 건강검진 항목인데 조사 회차마다 변수(데이터의 항목 이름)가 달라서, 옛 이름만 찾던 코드가 데이터를 통째로 비움 → 회차별로 일일이 맞춤
  • 핵심 장면: AI가 “검증 다 했어요”라며 멈추려는 걸, ‘끝까지 검증하라’는 자동 장치로 4단계 무결성 검증을 완주시킴
  • 규모: 14년 치 14개 조사를 **하나의 깨끗한 표(10만+ 행)**로 자동 통합
  • 확장: 40~64세 → 40세 이상 전체로 넓혀 시니어·실버 시장까지 포함

🎯 이런 분들께 도움돼요

  • 공공데이터·설문·로그처럼 여러 출처의 데이터를 합쳐야 하는 분
  • “데이터가 왜 자꾸 비지?”로 고생해본 분
  • AI에게 일을 시켰는데 대충 하고 멈추는 경험이 있는 분
  • 엑셀·데이터 취합을 검증까지 제대로 하고 싶은 실무자

😫 문제 상황 (Before)

1편에서 미국(NHANES)·한국(KNHANES) 데이터를 열심히 모았습니다. 그런데 2편에서 방향을 한국 만성콩팥병으로 잡고, 막상 그 데이터를 모델 재료로 쓰려니 문제가 드러났어요.

  • 미국·한국 데이터가 섞여 있어 정리가 필요했고
  • “감마지티피”, “수면시간” 같은 항목이 같은 항목인데도 조사 회차마다 이름이 달라서, 어떤 해는 멀쩡하고 어떤 해는 통째로 비어 있었습니다 (2편에서 팀원이 가져온 그 문제가 빙산의 일각이었어요)
  • 어떤 항목은 특정 연도에만 측정했더라고요

한마디로 “데이터를 모았다”와 “데이터를 쓸 수 있다”는 완전히 다른 얘기였습니다. 그래서 처음부터 다시 쌓기로 했어요.

🛠️ 사용한 도구

  • 도구: Claude Code
  • 모델: Claude Opus
  • 특이사항: 데이터를 합쳐주는 조수이자, ‘검증을 끝까지 하라’는 조건을 걸면 스스로 멈추지 않고 완주하는 검사관으로 활용

🔧 작업 과정

처음부터 다시 — 한국 데이터만으로

먼저 작업할 폴더(프로젝트 템플릿)를 메인으로 확정하고, 데이터를 갈아엎기로 했습니다.

데이터셋부터 다시 만들자
KNHANES만 하기로 했으니 원시데이터로부터 통합 CSV 파일을 다시 만들어 보자

AI가 미국 데이터 의존을 걷어내고, 한국 건강조사 원시 자료만으로 통합 데이터를 새로 빌드했습니다. 38개 항목 × 14년 치(2011~2024) 조사를 합쳐서 10만 행이 넘는 하나의 표로요. 사람이 손으로 하면 며칠, 실수까지 생각하면 엄두도 안 날 일을 자동으로 끝냈습니다.

💡 “데이터가 더럽다” 싶으면 손보지 말고 처음부터 다시 쌓는 게 빠를 때가 있습니다. 섞인 데이터를 부분부분 고치는 것보다, 깨끗한 원시 자료에서 한 번에 다시 만드는 편이 오히려 단순합니다.


공공데이터의 함정 — “이름이 해마다 바뀐다”

가장 골치 아팠던 건 같은 항목인데 조사 회차마다 변수 이름이 다른 거였어요. 그래서 옛 이름만 찾는 코드는 그 항목을 “데이터 없음”으로 처리해버립니다.

이게 전체 변수가 맞아? (변수 목록 이미지 확인)
2011 이후 사이클만 남겨줘
고지혈증 컬럼을 추가해. 고지혈증의 컬럼명이 뭐야?

AI가 회차별로 실제 이름을 찾아 일일이 연결했습니다. 또 핵심 항목을 측정하지 않은 옛날(1998~2010년)은 제외하고 2011년 이후만 남겼죠. 이때 배운 게 있습니다. 공공데이터는 절대 “깔끔할 것”이라 가정하면 안 된다. 같은 이름표를 믿지 말고 실제 내용을 봐야 합니다.

💡 데이터의 “이름표”를 그대로 믿지 마세요. 같은 이름이라고 같은 내용이 아니고, 다른 이름이라고 다른 내용이 아닙니다. AI에게 “실제 값을 보고 매핑하라”고 시키면 이름표 함정을 피해 갑니다.


핵심 장면 — AI가 “다 됐다”고 멈추지 못하게

데이터를 다 합친 뒤, 저는 검증이 가장 중요하다고 봤어요. 그런데 AI는 종종 “검증했습니다 ✓” 하고 일찍 마무리하려는 경향이 있거든요. 그래서 “끝까지 검증하라”는 조건을 거는 자동 장치를 썼습니다.

다시 한번 통합데이터 파일에 문제는 없는지 검증해보자

이 조건을 걸어두니 AI가 중간에 멈추지 못하고 4단계 무결성 검증을 완주했습니다.

  1. 파일이 제대로 합쳐졌나 (행·열 개수 일치)
  2. 데이터가 멀쩡한가 (중복·나이·성별 이상치)
  3. 의학적으로 말이 되나 (수치가 정상 범위인가)
  4. 연도별로 빈 데이터 패턴이 설명되나

검증하는 김에 옛날 잔여 파일 12개도 찾아 정리하고, 작업 과정과 검증 결과를 별도 기록 문서(BUILD_NOTES)로 남겼습니다. “나중에 왜 이렇게 했지?”를 다시 묻지 않아도 되게요.

이 장면이 이번 편의 핵심이에요. AI는 빠르지만 가끔 일을 일찍 끝내려 합니다. 검증을 완주하게 만드는 건 결국 사람이 설계해야 했습니다.

💡 AI가 일을 일찍 끝내려 하면, “이 조건을 만족할 때까지 멈추지 마”라고 장치를 거세요. “검증했습니다 ✓“는 시작이지 끝이 아닙니다. 무엇을 어떤 기준으로 확인했는지 항목으로 받아내야 진짜 끝입니다.


시니어로 시장을 넓히다

데이터가 단단해지자 욕심이 생겼습니다.

대상 나이대가 40세 이상으로 변경되었어. 시니어 실버 산업까지 포함시키기 위해
데이터 통합파일의 분석 대상과 상관없이 모든 나이대를 추출한 거지?

타겟을 40~64세에서 40세 이상 전체로 넓혔습니다. 고령화 시대에 시니어·실버 시장이 크니까요. 중요한 건 통합 데이터 자체는 모든 나이대를 그대로 보존하고, 나이 필터는 분석할 때만 적용하기로 한 점입니다. 원본은 손대지 않는 게 데이터 작업의 기본이거든요. 이어서 시니어 페르소나(은퇴자·농촌 거주자)와 큰 글씨·음성·가족 모드 같은 시니어 기능, 요양시설·보험사 같은 B2B 채널까지 시장 전략에 반영했습니다.

💡 원본은 통째로 보존하고, 자르는 건 쓸 때만. 데이터를 미리 잘라두면 대상이 바뀔 때마다 처음부터 다시 만들어야 합니다. 통째로 두면 필터 한 줄만 바꾸면 끝나요.


✅ 결과 (After)

Before vs After

항목BeforeAfter
데이터 상태미국·한국 섞임, 군데군데 빔한국 단독 통합 10만+ 행, 회차별 이름 정리
검증막연4단계 무결성 검증 완주 + 기록 문서
데이터 신뢰도”쓸 수 있나?” 불안검증 통과 + 함정(이름·결측) 문서화
타겟40~64세40세 이상 전체 (시니어·실버 포함)

결과물

  • 한국 단독 통합 데이터 (38항목 × 14년 × 10만+ 행, 원본 보존)
  • 작업·검증 기록 문서(BUILD_NOTES) — 변수 이름 함정·결측 패턴 영구 기록
  • 시장 전략 v0.6 — 시니어 페르소나·기능·B2B 채널

💬 이 과정에서 배운 AI 활용 팁

효과적이었던 것

  1. ‘빌드’와 ‘검증’을 한 세트로 시켜라 — 데이터를 합치게만 하지 말고, 같은 호흡으로 “문제없는지 검증까지” 시키세요.
  2. 검증을 끝까지 하게 만들 ‘조건’을 걸어라 — “이 조건을 만족할 때까지 멈추지 마”라고 하면 AI가 일찍 손 떼지 않습니다.
  3. 작업 과정을 기록으로 남겨라 — “어떻게·왜 이렇게 처리했는지”를 문서로 남기면 나중에 검증·인수인계·발표에 그대로 씁니다.
  4. 원본은 건드리지 말고, 필터는 분석에서 — 데이터를 미리 잘라내지 말고 통째로 보존하면 대상이 바뀌어도 다시 안 만들어도 됩니다.

이렇게 하면 안 돼요

  1. 공공·외부 데이터가 “깔끔할 것”이라 가정하지 마세요 — 이름표(변수명)가 같다고 믿지 말고 실제 내용을 확인해야 합니다.
  2. AI의 “검증 완료 ✓“를 곧이곧대로 믿지 마세요 — 무엇을 어떻게 검증했는지 항목으로 받아서 확인하세요.

🌍 다른 업무에 적용한다면?

  • 여러 시트·파일 취합: 부서별·월별 엑셀을 합칠 때도 “합치기 + 검증”을 한 번에. 합계가 맞는지, 빈 칸이 왜 생겼는지까지 AI에게 확인시키세요.
  • 데이터 분석 전반: “결과가 이상하다” 싶으면 십중팔구 데이터 정제 단계의 함정입니다. 모델·분석을 의심하기 전에 데이터부터 검증하세요.

🚀 앞으로의 계획

기획에 살이 붙고 데이터도 단단해졌습니다. 이제 본격적으로 만들 준비가 끝난 거예요.

다음 편(6편)에서는 막연하게만 알던 “웹서비스가 결국 뭔지”를 질문으로 정복합니다. 백엔드가 뭔지, 데이터베이스가 어떻게 도는지 모르는 채로 시작해서, AI에게 묻고 또 물어 하루 만에 설계도(데이터 구조·통신 통로·화면 흐름)를 그려냅니다. 비전공자가 모르는 기술을 질문으로 분해해 가는 이야기로 이어집니다.

📋 재사용 가능한 프롬프트

프롬프트 1: 흩어진 데이터 통합 + 검증 한 세트

여러 출처의 [데이터]를 하나로 통합하고 싶어. ① 항목 이름이 출처·기간마다 다를 수 있으니 실제 내용을 기준으로 매핑해서 합쳐줘. ② 합친 뒤 무결성 검증(개수 일치·중복·이상치·빈 값의 원인)까지 해줘. ③ 작업 과정과 검증 결과를 같은 폴더에 기록 문서로 남겨줘.

프롬프트 2: AI가 검증을 끝까지 하게 만들기

[작업]을 한 뒤, “결과에 문제가 없는지 끝까지 검증”하는 걸 목표로 삼아줘. 검증이 완전히 끝날 때까지 중간에 멈추지 말고, 무엇을 어떤 기준으로 확인했는지 항목별 체크리스트로 보여줘.

프롬프트 3: 데이터 작업 기록(인수인계용) 남기기

방금 한 데이터 작업을, 다른 사람이 이어받을 수 있게 기록 문서로 정리해줘. 배경·결정·항목 명세·검증 과정·주의사항(함정)·사용법을 포함하고, 산출물과 같은 폴더에 저장해줘.


📌 「AI 헬스케어 파이널 프로젝트」 연재 5편입니다. 다음 막에서 또 이어집니다.

← 블로그 전체 목록