데이터 정제: 결측값, 충돌, 중복 처리

작성: Ai Flowi · 게시일

데이터 정제는 명시적인 규칙으로 데이터셋의 결함을 찾아 해결하면서, 각 변경을 설명할 수 있는 충분한 근거를 보존하는 작업입니다. 결측값, 일관되지 않은 표현, 유효하지 않은 범위, 중복 기록 등을 다룹니다. 특이해 보이는 값이 반드시 잘못된 것은 아닙니다. 해결되지 않은 충돌은 추측으로 대체하지 말고 드러나도록 유지해야 합니다.

값을 변경하기 전에 데이터 기준 정의하기

각 필드의 의미, 허용되는 표현, 허용되는 값 부재 상태부터 정합니다. 빈 문자열, 누락된 필드, 명시적인 null은 서로 다른 의미일 수 있습니다. 숫자 0 자체는 유효한 데이터일 수 있습니다. 모든 값 부재를 0으로 대체하면 표를 계산하기 쉬워지지만, 그 표가 답하는 질문 자체가 바뀔 수 있습니다.

변경하지 않는 원본 사본과 일관된 원자료 행 참조 정보를 유지합니다. 정제 결정은 별도 기록부에 저장합니다. 대상 필드, 원래 값, 제안된 값, 규칙 버전, 처리 상태를 기록합니다. 수정은 규칙이 정당한 대체 값을 제공한다는 뜻입니다. 격리는 해당 기록을 승인된 데이터셋에 넣을 수 없다는 뜻입니다. 미해결 질문은 더 많은 근거가 필요하다는 뜻이며, 그럴듯한 값을 찾았다는 뜻이 아닙니다.

정규화는 의미에 따라 이루어져야 합니다. 코드 앞뒤의 공백은 부수적인 요소일 수 있지만, 인용된 텍스트 안의 공백은 의미가 있을 수 있습니다. 앞자리 0은 항목을 식별하는 데 필요할 수 있습니다. 단위 표기가 다르면 숫자를 비교하기 전에 명시적인 변환 규칙이 필요합니다. 형식이 일관된다고 해서 의미까지 올바른 것은 아닙니다.

가상의 문제 목록과 결정 기록부

아래 기록은 모두 가상 데이터입니다. 제안된 결정은 정책을 설명하며, 관찰된 정제 결과가 아닙니다. 실험실에서 시료 측정값을 제공한다고 가정하겠습니다. 명시된 데이터 기준은 섭씨 0~40도의 온도, 모호하지 않게 작성된 날짜, 텍스트 형식의 시료 ID를 허용합니다. 이 범위는 이 가상 데이터셋에만 적용됩니다. 문제 목록에 표시되지 않은 필드는 기준을 충족합니다.

변경 전, 제안된 변경 후, 미해결 결정
기록 / 문제변경 전제안된 변경 후결정 근거
A: 빈 날짜date=””원본의 빈 값을 유지하며, 날짜는 미해결 상태입니다.필수 날짜가 제공될 때까지 격리합니다.
B: 누락된 날짜date 필드가 없습니다.필드 누락 상태를 유지합니다.격리하며, A의 빈 값과 누락을 구분합니다.
C: 제공된 단위sample_id=” 0017 “; temperature=293.15 Ksample_id=”0017″; temperature=20 °C코드 처리 정책에 따라 앞뒤 공백을 제거합니다. 원본 값을 보존하면서 켈빈 값에서 273.15를 빼 변환합니다.
D: 충돌하는 IDsample_id=”0022″; temperature=18 °C자동으로 대체하지 않습니다.하나의 ID에 서로 양립하지 않는 측정값이 있으므로 E와 함께 보류합니다.
E: 충돌하는 IDsample_id=”0022″; temperature=27 °C자동으로 대체하지 않습니다.별도의 관측인지, 수정된 값인지 확인합니다.
F: 모호한 날짜date=”03/04/2026″미해결 상태로 두고 제공된 텍스트를 유지합니다.지역별 표기 방식이 지정되지 않아 일과 월을 안전하게 결정할 수 없습니다.
G: 기준 위반temperature=-5 °C원본 값을 승인된 출력 밖에 보존합니다.명시된 범위에 따라 격리하되, 물리적으로 불가능한 값이라고 단정하지 않습니다.
H: 완전히 동일한 반복 기록제공된 모든 필드가 C의 원본 기록과 같습니다.C와의 중복 관계를 기록합니다.이 정책에 명시된 ‘원자료의 관측 1건당 기록 1개’ 규칙에 따라서만 제외합니다.

이 예시 정책을 적용하면 C는 유일한 승인 후보가 되고, H는 문서화된 중복 1건이 되며, 6개 행은 격리 상태로 남습니다. 입력된 8개 행은 모두 추적할 수 있습니다. 이 수치는 교육용으로 계산한 결과이며, 운영 환경의 통과율이 아닙니다. 나중에 근거가 확보되어 격리된 행을 해제한다면, 원래 스냅샷을 덮어쓰지 말고 결정 이력을 업데이트합니다.

데이터 정제에서 중복과 기록 연결은 어떻게 다른가요?

완전히 동일한 중복을 제거할 때는 중복 제거 규칙에서 선택한 값을 비교합니다. 먼저 같은 값의 반복이 반복된 사건을 나타내는지, 하나의 사건이 여러 번 복사된 것인지를 정해야 합니다. 서로 다른 유효한 관측에서도 측정값이 같을 수 있습니다. 값이 같다는 이유만으로 삭제할 수는 없습니다.

같은 ID에 서로 다른 값이 있으면 충돌 처리 정책이 필요합니다. 가장 최신 행을 유지하는 규칙은 타임스탬프와 해당 출처가 기준 정보를 제공할 권한이 그 규칙을 뒷받침할 때만 정당합니다. 타임스탬프가 실제 관측 시점이 아니라 수집 시점을 나타낸다면, 올바른 측정값을 선택할 근거가 되지 못할 수 있습니다.

기록 연결은 서로 다른 기록이 현실의 동일한 대상을 설명하는지 판단하는 작업입니다. 비슷한 이름이나 가까운 주소는 검토할 근거이며, 확증이 아닙니다. 일치 후보와 승인된 병합을 구분하고, 병합된 기록에 기여한 원자료 기록을 보존합니다. 출처 정보를 버린 뒤에는 잘못된 병합을 되돌리기가 훨씬 어렵습니다.

결정론적 규칙과 AI 제안

알려진 단위 변환, 필수 필드, 허용되는 표현에는 명시적인 규칙을 사용합니다. AI 모델은 일관되지 않은 자유 텍스트의 해석을 제안할 수 있지만, 제안에는 이를 뒷받침하는 원자료 근거와 검토가 필요합니다. 유창한 설명만으로 D와 E 중 어느 값이 옳은지 입증할 수는 없습니다.

이상치 탐지는 조사할 기록에 표시를 합니다. 해당 기록을 삭제해야 한다는 것을 입증하지는 않습니다. 머신러닝에 사용할 데이터셋이라면 결측값 대체나 스케일링의 매개변수는 훈련 데이터에서 학습하고, 선택한 정책을 따로 떼어 둔 데이터에 적용합니다. 따로 떼어 둔 데이터의 값으로 변환을 학습하면 평가 정보가 누출됩니다.

Excel, Python, 표 처리 도구 모두 정제 정책을 구현할 수 있습니다. 도구 선택보다 원본 값 보존, 필드 의미 문서화, 반복 가능한 결정이 더 중요합니다. 구문 수정 도구는 데이터 표현을 다룹니다. 서로 충돌하는 측정값을 해결할 수는 없습니다.

정제 작업에 사용하는 카탈로그 구성 요소

아래 단일 열 정제 실습에서 사용하는 인터페이스는 Table Operations 카탈로그 항목을 참고하세요.

내보낸 자료에는 "Drop Duplicates"의 비교 대상 열이나 어떤 기록을 유지하는지에 대한 정책이 명시되어 있지 않습니다. H에 이 옵션을 적용하기 전에 원본 필드, 수정된 필드, 선택한 열 중 무엇을 비교하는지 확인합니다. C의 단위를 변환한 뒤에는 C와 H의 비교 결과가 달라질 수 있습니다. 표 연산과 별개로 원자료 간 관계를 보존합니다. 변환 경계는 Data → DataFrame을, JSON 문자열 수정은 JSON Cleaner를 참고하세요.

범위가 제한된 설정과 출력

설정 예시이며, 기록된 테스트가 아닙니다

AI Flowi Workflow 작업 공간에서 원본 값과 원자료 참조 정보가 들어 있는, 사용 권한이 확보된 테스트 Table을 준비합니다. Table Operations의 df에는 작업용 사본을, operation에는 "Replace Value"를, column_name에는 sample_id를, replace_value에는 " 0017 "을, replacement_value에는 "0017"을 설정합니다. 결과 Table을 원본 사본과 비교합니다. 이 실습은 제공된 코드의 앞뒤 공백만 다루며, 일반적인 공백 제거 규칙을 시험하는 것은 아닙니다.

일치하는 H의 ID도 바뀌는지, 다른 셀이 변경되는지 살펴봅니다. 온도와 날짜 열은 이번 대체 실습에서 제외합니다. ID를 수정해도 켈빈 값이 변환되거나, D와 E의 충돌이 해결되거나, F에 누락된 지역별 표기 방식이 채워지지는 않습니다. 표현 변경을 테스트하는 동안 모든 행을 유지합니다. 승인과 제외는 계속 기록부에서 별도로 결정합니다.

정제 출력 명세에는 승인된 행, 격리된 행, 사유가 첨부된 중복 관계가 포함됩니다. 이 한 번의 대체 단계는 살펴볼 Table만 생성합니다. 모델이나 외부 제공업체 호출은 사용하지 않습니다. Table Operations는 카탈로그에 문서화되어 있으며, Ai Flowi가 운영 환경에서 검증한 것은 아닙니다.

눈치채지 못하는 데이터 손실을 막기 위한 점검

각 원자료 행에 승인, 격리, 중복 제외 중 정확히 하나의 최종 처리 상태를 부여합니다. 각 상태의 건수 합계가 입력 건수와 같은지, 상태 간 원자료 참조 정보가 겹치지 않는지 확인합니다. 원본 값, 단위, 충돌 연결 정보도 비교합니다. 합계가 맞아도 행이 잘못 대체된 사실이 숨겨질 수 있습니다.

기존 리드 데이터 정제 레시피는 특정 운영 요청에 대해 “32개 사례 모두 통과”했다고 보고합니다. 적용 범위는 리드 필드 정제와 시트 쓰기이며, 반복 전달 사례에서는 행이 하나 더 추가됩니다. 이 결과가 위의 측정값 정책이나 충돌 처리를 검증하는 것은 아닙니다. 기록된 레시피의 적용 범위는 활용 사례를, 적재와 대사 경계는 ETL을 참고하세요.