데이터 정리에서 가장 위험한 순간은 파일이 깔끔해졌지만 어떤 값이 왜 바뀌었는지 모를 때입니다. AI에게 파일 전체를 맡기기 전에 열별 변환 규칙과 변경 기록을 먼저 만듭니다.

원본과 작업본을 분리합니다
원본 파일은 읽기 전용으로 보관하고 작업본을 새 이름으로 만듭니다. 행 수, 고유 ID 수, 주요 금액 합계와 빈 값 수를 기록합니다. 정리 후 같은 지표를 비교할 수 있어야 합니다.
열별 규칙표를 만듭니다
| 열 | 현재 문제 | 변환 규칙 | 허용 예외 | 검증값 |
|---|---|---|---|---|
| 주문일 | 형식 혼합 | YYYY-MM-DD | 원문 보존, 변환값은 보류 | 최소·최대 날짜 |
| 채널 | 표기 혼합 | 검색/소셜/이메일 | 기타 유지 | 범주별 행 수 |
| 매출 | 문자 포함 | 정수 원 | 환불은 음수 | 전체 합계 |
AI에는 값보다 규칙을 먼저 검토시킵니다
아래는 합성 CSV의 열 설명과 정리 규칙이다. 실제 데이터를 바꾸지 말고 규칙의 모순과 누락만 검토해줘.
확인 항목: 중복 판정 키 / 날짜·시간대 / 빈 값 처리 / 범주 매핑 / 숫자 단위 / 원본 보존 / 변경 로그.
출력: 문제 / 영향 / 수정 규칙 / 정리 후 검증식.
규칙이 확정된 뒤 일부 합성 행으로 변환 결과를 시험합니다. 개인정보가 있는 실제 고객 파일은 회사가 승인한 환경에서만 처리합니다.
반드시 남길 변경 로그
- 변경 전 값과 변경 후 값
- 적용한 규칙 이름
- 변경된 행의 ID
- 자동 변경인지 수동 확인인지
- 변환 실행일과 담당자
정리 후 검증
행 수가 의도 없이 줄지 않았는지, ID가 중복되거나 사라지지 않았는지, 금액 합계 차이가 설명 가능한지 확인합니다. 범주별 건수의 전후 비교도 남깁니다.
CSV에는 화면에서 잘 보이지 않는 이메일, 전화번호, 내부 ID가 함께 들어갈 수 있습니다. 업로드 전에 모든 열을 확인하세요.
실패 사례
서울, 서울시, 서울특별시를 하나로 바꾸는 작업 중 빈 지역을 서울로 채우면 누락을 정상값으로 오인합니다. 변환 규칙과 결측값 처리를 분리하고, 변경 전후 행 수와 고유값 목록을 함께 보관합니다.
관련 글
직접 해보기: 6행을 정리했는데 합계가 달라진다면
아래는 이 글을 위해 새로 만든 합성 주문 데이터입니다. 실제 주문이 아닙니다. 쉼표가 들어간 금액을 큰따옴표로 감싼 이유는 CSV에서 쉼표가 열 구분자이기 때문입니다. 이 따옴표를 지우면 ‘1,000’이 두 열로 쪼개집니다.
order_id,date,revenue,channel
O001,2026-08-01,"1,000",검색
O002,08/02/26,"2,000",Search
O003,2026-08-03,,소셜
O004,2026-08-04,-500,검색
O001,2026-08-01,"1,000",검색
O005,2026-08-05,협의,이메일
깔끔하게 만들겠다고 중복을 지우고 빈칸을 0으로 바꾸면 문제를 숨기기 쉽습니다. 이 파일에서는 숫자로 읽을 수 있는 값만 합하면 3,500원입니다. 하지만 이를 ‘전체 매출 3,500원’이라고 보고하면 안 됩니다. 금액이 비어 있는 행과 ‘협의’ 행이 있고, O001은 두 번 들어 있기 때문입니다.
| 발견 사항 | 자동으로 해도 되는 일 | 사람이 정할 일 |
|---|---|---|
| 1,000이라는 문자열 | 원문을 남기고 숫자 후보 1000 생성 | 통화가 원인지 확인 |
| O001 두 건 | 중복 후보로 묶고 둘 다 유지 | 재전송인지 분할 거래인지 확인 |
| 08/02/26 | 날짜 형식 미확인으로 표시 | 8월 2일인지 2월 8일인지 원 시스템 확인 |
| 금액 빈칸·협의 | 합계에서 제외된 행 수 표시 | 누락인지 미확정인지 확인 |
| -500 | 음수 그대로 보존 | 환불·취소 등 거래 종류 확인 |
| Search | 범주 후보로 표시 | ‘검색’과 같은 유입 정의인지 확인 |
검증식은 ‘총행 6 = 유지행 6 + 삭제행 0’부터 시작합니다. 첫 점검에서 행을 삭제할 이유는 없습니다. O001의 중복 한 건이 재전송으로 확인돼 나중에 제외된다면 숫자 부분합은 2,500원이 됩니다. 이때도 미확정 금액 두 건이 남아 있으므로 완전한 매출 합계는 아닙니다. 숫자 옆에 포함·제외 조건을 써야 보고서가 정직해집니다.
AI에게 줄 요청도 ‘정리’ 대신 ‘변경 제안’으로 바꿉니다
위 합성 CSV를 수정하거나 행을 삭제하지 마세요.
원본 행 번호 / 원래 값 / 제안 값 / 적용 규칙 / 보류 사유로 변경 제안표를 만드세요.
O001 중복은 두 행 모두 보존하세요.
08/02/26은 추정하지 말고 날짜 미확인으로 남기세요.
빈 금액과 '협의'를 0으로 바꾸지 마세요.
숫자로 해석 가능한 행의 부분합과 전체 행 수를 따로 계산하세요.
마지막에 이 부분합을 전체 매출이라고 부를 수 없는 이유를 설명하세요.
정답이 미리 있는 이 작은 예제로 먼저 확인하세요. AI가 3,500원을 전체 매출로 적거나, 합계 2,500원을 내면서 어떤 행을 제외했는지 밝히지 않으면 실제 파일을 맡길 단계가 아닙니다. 사람마다 중복 판정이 다를 수 있으므로 ‘AI와 숫자가 같다’보다 ‘같은 규칙을 적용했다’가 중요합니다.
정리 도중 자주 만나는 세 가지 함정
엑셀로 열었더니 주문번호 앞의 0이 없어졌다. 파일을 더블클릭하는 대신 데이터 가져오기에서 ID 열의 자료형을 텍스트로 지정합니다. 저장된 CSV에서 이미 0이 사라졌다면 AI에게 복원하게 하지 말고 원 시스템에서 다시 내보냅니다.
한글이 깨진다. 원본을 덮어쓰지 말고 내보내기 인코딩을 확인합니다. UTF-8과 CP949를 무작정 오가며 저장하면 원래 문자를 잃을 수 있습니다. 실패한 파일을 그대로 보존하고, 몇 행만 새 작업본으로 읽어 정상 여부를 먼저 확인합니다.
공백을 지웠더니 값이 합쳐졌다. 앞뒤 공백 제거와 문자열 내부 공백 제거는 다른 규칙입니다. ‘서울 강서’와 ‘서울강서’를 같게 취급해도 되는지, 제품 코드의 공백이 의미를 갖는지 확인해야 합니다.
원본에는 재식별 가능한 ID가 들어갈 수 있습니다. 이 합성 예제와 열 설명만 AI에 주고, 실제 주문 데이터는 회사가 승인한 처리 환경 안에서 다루세요.
보완 확인일: 2026-08-31. 합성 입력 6행의 행 수·고유 ID·중복 ID·숫자 부분합·미확정 날짜를 Python 표준 CSV 파서로 대조했습니다. 소규모 예제 검증이며 실제 회사 파일의 정합성 검증을 대신하지 않습니다.