파이썬 수집 봇(Bot)을 통해 조달청 나라장터(G2B)와 LH의 입찰 데이터를 긁어오는 데 성공하셨다면, 데이터 엔지니어링의 첫 관문을 통과하신 것입니다. 하지만 수집된 엑셀이나 CSV 파일을 열어보면, 겉보기엔 화려한 데이터들이 실상은 ‘정제되지 않은 쓰레기(Raw Garbage)’에 가깝다는 것을 깨닫게 됩니다.
한국토지주택공사가 ‘LH’, ‘토지주택공사’, 심지어 오타가 섞인 ‘한국토지주탹공사’로 제각각 표기되어 있다면, 이 데이터로는 어떤 유의미한 비즈니스 인사이트도 뽑아낼 수 없습니다. 본 문서에서는 파이썬의 데이터 분석 표준 라이브러리인 pandas를 활용하여, 이 거친 데이터를 전사 마스터 데이터(MDM) 기준에 맞게 정제(Cleansing)하고 정규화(Normalization)하는 실무 기법을 다룹니다.
1. 결측치(Missing Value) 통제와 데이터 클렌징
공공 웹 크롤링이나 API 연동 시 가장 흔하게 발생하는 문제는 데이터가 비어있는 ‘결측치(Null 또는 NaN)’ 현상입니다.
- 필수 데이터 방어: 입찰 공고명이나 기초금액처럼 비즈니스 로직에 치명적인 필수 값이 결측치라면,
pandas의dropna(subset=['기초금액'])함수를 사용하여 해당 행을 과감하게 드롭(Drop) 시켜야 데이터 오염을 막을 수 있습니다. - 대체 값 삽입: 반면, 비고란이나 단순 부가 설명이 누락된 경우라면
fillna('정보 없음')함수를 통해 일관된 문자열로 채워 넣어 향후 데이터베이스(DB) 적재 시 발생하는 에러를 원천 차단해야 합니다.
2. MDM 코드북(Codebook)을 활용한 기준 정보 맵핑
이 단계가 바로 단순한 코딩을 넘어 ‘데이터 거버넌스’가 시스템에 물리적으로 적용되는 핵심 구간입니다.
- 사전(Dictionary) 매핑: 파이썬 내부에 전사 MDM 표준 명칭이 담긴 코드북을 딕셔너리 형태로 구축합니다. 예를 들어
{'LH': '한국토지주택공사', '토지주택공사': '한국토지주택공사'}와 같이 설정합니다. - pandas map() 함수 적용: 수집된 데이터프레임의 ‘발주처’ 컬럼에
df['발주처'].map(mdm_dict)를 적용하면, 제각각이던 수만 건의 기관명 데이터가 단 1초 만에 전사 표준 명칭으로 완벽하게 치환됩니다. 이 과정을 통해 비로소 ‘단일 진실 공급원(SSOT)’의 뼈대가 세워집니다.
3. 정규표현식(Regex)을 이용한 텍스트 정규화
텍스트 내에 섞인 불필요한 특수문자나 일관성 없는 숫자 단위(예: ‘10,000원’, ‘10000’, ‘1만원’)는 후속 통계 분석을 가로막는 가장 큰 장애물입니다.
- 파이썬의
re모듈과pandas의str.replace()함수를 결합하여 정규표현식을 적용합니다. - 금액 컬럼에서 숫자 이외의 모든 문자(원, 콤마 등)를
^\d정규식으로 일괄 제거하고, 데이터 타입을 정수형(Integer)으로 캐스팅(Casting)하여 연산이 가능한 순수 숫자 데이터로 정규화합니다.
결론: 데이터의 신뢰성을 담보하는 최후의 보루
파이썬 pandas를 활용한 정제 과정은, 밖에서 퍼 온 흙탕물을 정수기를 통해 깨끗한 1급수로 만드는 작업입니다. MDM 거버넌스 원칙이 코드로 완벽하게 이식될 때, 비로소 데이터는 엔터프라이즈 환경에서 신뢰받는 ‘자산(Asset)’으로 기능할 수 있습니다.
이제 데이터를 수집하고 1급수로 정제하는 것까지 완료했습니다. 하지만 동일한 공고가 G2B와 타 기관 시스템에 중복으로 올라오는 경우는 어떻게 걸러내야 할까요? 다음 포스팅에서는 데이터 파이프라인의 완성도를 극한으로 끌어올리는 ‘중복 공고 식별 및 퍼지 매칭(Fuzzy Matching) 알고리즘 실무’를 심층 분석하겠습니다.