주소·전화번호 데이터 정제 노가다 끝! AI로 지저분한 엑셀 데이터 규격화하기

주소·전화번호 데이터 정제 노가다 끝! AI로 지저분한 엑셀 데이터 규격화하기 이미지 1

안녕하세요.

마케팅 캠페인을 위해 고객 명단을 정리하거나, 기존 주소록을 시스템에 일괄 등록하려고 할 때 우리를 가장 힘들게 하는 것이 무엇일까요? 바로 제각각인 데이터 형식입니다. 누군가는 ‘서울시 강남구’라고 쓰고, 누군가는 ‘서울특별시 강남구’라고 씁니다. 전화번호 역시 ‘010-1234-5678’, ‘01012345678’, ‘010 1234 5678’ 등 온갖 형식으로 뒤섞여 있기 마련입니다.

이런 ‘지저분한 데이터(Dirty Data)’를 일일이 수동으로 수정하는 것은 시간 낭비일 뿐만 아니라 실수할 가능성도 매우 높습니다. 하지만 인공지능을 활용하면 복잡한 정규표현식이나 노가다 없이도 순식간에 깔끔하게 규격화된 데이터를 얻을 수 있습니다. 오늘은 챗GPT와 파이썬을 활용해 데이터를 ‘정규직(Standardized)’으로 만드는 마법 같은 방법을 소개합니다.


1. 데이터 정제, 왜 AI가 압도적인가?

기존의 엑셀 기능(찾기/바꾸기, 텍스트 나누기)만으로는 다음과 같은 문제를 해결하기 어렵습니다.

  • 문맥 이해: ‘서울’과 ‘서울특별시’가 같은 곳임을 인지하고 통일해야 합니다.
  • 유연한 패턴 대응: 정해진 규칙 없이 제각각인 오타나 띄어쓰기를 잡아내야 합니다.
  • 복합 정보 분리: ‘서울시 강남구 테헤란로 123 (역삼동)’에서 시/구/상세주소를 정확히 쪼개야 합니다.

AI는 수많은 텍스트 데이터를 학습했기 때문에, 사람이 데이터를 읽고 판단하는 것과 유사한 방식으로 정보를 분류하고 재구성합니다.


2. 챗GPT를 활용한 즉석 데이터 정제 프롬프트

파이썬 코드를 짜기 전, 챗GPT 화면에서 바로 데이터를 정리하고 싶을 때 유용한 프롬프트 전략입니다.

[프롬프트 예시]

“아래에 나열된 주소 데이터들을 [시/도], [시/군/구], [상세주소] 형식의 표로 만들어줘. ‘서울’은 ‘서울특별시’로, ‘경기’는 ‘경기도’로 표준 명칭을 사용해줘. 또한 전화번호는 모두 ‘010-0000-0000’ 형식으로 통일해줘.”

이렇게 요청하면 AI가 텍스트 뭉치를 분석해 깔끔한 표 형태로 출력해 줍니다. 우리는 이를 다시 엑셀로 복사하기만 하면 됩니다.


3. Python을 활용한 대량 데이터 규격화 자동화

데이터가 수천, 수만 건이라면 일일이 복사할 수 없습니다. 이때는 파이썬과 OpenAI API를 결합한 자동화 스크립트가 필요합니다.

[코드 예제 1] 주소 및 전화번호 표준화 스크립트

import openai

def standardize_data(raw_data, api_key):
    """
    지저분한 데이터를 AI를 통해 규격화된 형식으로 변환합니다.
    """
    client = openai.OpenAI(api_key=api_key)

    prompt = f"""
    다음 데이터를 정해진 형식으로 정제해줘.

    [데이터]
    {raw_data}

    [출력 형식]
    이름 | 표준 전화번호(010-XXXX-XXXX) | 표준 주소(시/도 시/군/구 상세주소)

    [규칙]
    - 지역명은 공식 행정구역 명칭을 사용(예: 서울 -> 서울특별시).
    - 누락된 정보가 있다면 '정보없음'으로 표시.
    """

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}],
        temperature=0
    )

    return response.choices[0].message.content

dirty_list = """
홍길동, 01012345678, 서울 강남 역삼동 123
임꺽정, 010 9876 5432, 경기도 수원시 팔달구 매산로 1
김철수, 02-111-2222, 부산 해운대구 우동
"""
print(standardize_data(dirty_list, "YOUR_API_KEY"))

4. 엑셀과 연동한 실무 자동화 워크플로우

단순히 텍스트를 바꾸는 것을 넘어, 엑셀 파일 자체를 처리하는 고도화된 방법입니다.

[코드 예제 2] Pandas와 AI를 활용한 엑셀 시트 자동 정제

import pandas as pd

def process_excel_with_ai(file_path, api_key):
    # 엑셀 로드
    df = pd.read_excel(file_path)

    # 비효율적인 행별 호출 대신 뭉치(Batch)로 처리하는 것이 핵심
    # 여기서는 개념 이해를 위해 간략화된 로직 제시
    for index, row in df.iterrows():
        original_text = f"{row['주소']} {row['연락처']}"
        # AI 호출을 통해 정제된 데이터 수신 (생략)
        # df.at[index, '정제주소'] = refined_address
        pass

    # 결과 저장
    df.to_excel("refined_data.xlsx", index=False)
    print("데이터 정제가 완료되었습니다.")


5. 데이터 정제 자동화 시 주의사항

  1. API 비용 관리: 대량의 데이터를 하나씩 API로 보내면 비용이 많이 발생할 수 있습니다. 10~20개씩 묶어서(Batching) 요청하는 것이 효율적입니다.
  2. 데이터 보안: 고객의 실명이나 전체 전화번호를 전송하는 것이 보안 정책상 금지되어 있다면, 식별이 불가능하도록 일부 데이터를 마스킹 처리하거나 비식별화 후 정제하는 기술이 필요합니다.
  3. 검수 프로세스: AI가 99% 정확하더라도 1%의 ‘환각(Hallucination)’이 발생할 수 있습니다. 정제가 끝난 후 필터링 기능을 통해 비정상적인 값이 있는지 반드시 확인해야 합니다.

주소·전화번호 데이터 정제 노가다 끝! AI로 지저분한 엑셀 데이터 규격화하기 이미지 2

결론

데이터 정제는 단순해 보이지만 업무의 질을 결정하는 가장 중요한 기초 작업입니다. “쓰레기를 넣으면 쓰레기가 나온다(Garbage In, Garbage Out)”라는 말처럼, 정제되지 않은 데이터로는 정확한 분석이나 마케팅이 불가능합니다.

이제 AI의 힘을 빌려 고통스러운 데이터 노가다에서 해방되세요. 절약된 시간에 여러분은 데이터가 주는 비즈니스 인사이트를 고민하고 전략을 짜는 데 더 집중할 수 있을 것입니다.

다음 포스팅에서는 “CSV 파일을 업로드하여 멋진 그래프와 차트로 즉석에서 시각화하는 법”을 소개하겠습니다. 보고서 퀄리티를 수직 상승시켜 줄 시각화 자동화 기술을 기대해 주세요!

관련 글 보기