데이터 분석에서 가장 중요한 단계는 의외로 ‘분석’ 그 자체가 아닙니다. 분석을 하기 전에 반드시 거쳐야 하는, 정제와 전처리 단계가 전체 과정의 70% 이상을 차지한다고 해도 과언이 아닙니다. 특히 공공데이터는 그 출처가 다양하고 포맷이 불균형한 경우가 많기 때문에 실전 활용을 위해서는 반드시 데이터를 ‘깨끗한 상태’로 만들어야 합니다.
많은 초보 분석가들이 ‘공공데이터포털’이나 ‘서울열린데이터광장’ 등에서 데이터를 수집한 후, 바로 시각화나 통계 분석에 들어가려 하지만, 그러한 접근은 오히려 오해를 낳거나 잘못된 인사이트를 도출할 수 있습니다. 결측치, 이상치, 불필요한 컬럼, 중복 행 등을 먼저 정리해야 신뢰도 높은 결과를 만들 수 있습니다.
이 글에서는 실전 공공데이터를 활용해 정제 및 전처리 과정을 단계별로 보여드리며, Python 기반 코드와 함께 실습 예제를 제공합니다. 데이터 분석의 시작을 제대로 배우고 싶다면, 지금부터 함께 따라오세요.
1단계: 공공데이터 수집 및 구조 이해하기
가장 먼저 해야 할 일은 원하는 주제의 공공데이터를 수집하는 것입니다. 대표적인 플랫폼으로는 공공데이터포털(data.go.kr), 서울열린데이터광장, 국토교통부, 기상청, 통계청 등의 사이트가 있으며, 대부분 CSV, XLS, JSON 형태로 데이터를 제공합니다.
예제에서는 서울열린데이터광장에서 제공하는 **‘서울시 공공와이파이 설치 현황 데이터’**를 사용해보겠습니다. 해당 데이터는 지역명, 주소, 설치년도, 와이파이명, 관리기관명 등의 컬럼으로 구성되어 있습니다. 다운로드 받은 후 Pandas를 이용해 파일을 불러오면 다음과 같이 확인할 수 있습니다:
import pandas as pd
df = pd.read_csv('seoul_wifi.csv')
df.head()
처음 데이터를 불러올 때는 컬럼 수, 데이터 수, 데이터 타입을 반드시 확인해야 합니다. 이를 위해 다음과 같은 명령어를 활용합니다:
df.info()
df.describe()
df.columns
이렇게 하면 데이터의 전체적 구조를 이해할 수 있으며, 어떤 컬럼이 필요하고 어떤 컬럼이 분석에 불필요한지 구분하는 첫 단계를 수행할 수 있습니다.
2단계: 결측치와 중복 제거, 불필요한 열 정리
다음 단계는 데이터를 본격적으로 정제(cleaning)하는 과정입니다. 일반적으로 공공데이터에는 결측치(null, NaN)가 존재하거나, 동일한 행이 반복되는 중복 데이터가 포함되어 있을 수 있습니다. 이를 파악하고 제거하거나 적절히 보완하는 것이 중요합니다.
결측치 확인 및 제거 방법:
df.isnull().sum() # 컬럼별 결측치 개수 확인
df.dropna(inplace=True) # 결측치가 있는 행 제거
또는 특정 컬럼에만 결측치가 있을 경우 대체값을 삽입할 수 있습니다:
df['설치년도'].fillna(2020, inplace=True) # 기본값 대체
중복 제거 역시 매우 중요합니다:
df.drop_duplicates(inplace=True)
그 외에도 필요 없는 컬럼을 삭제하여 가독성을 높이고 데이터 분석 준비 상태를 만들 수 있습니다:
df.drop(columns=['관리기관명', '설치장소유형'], inplace=True)
이러한 과정은 전체 데이터의 신뢰도와 속도를 높이는 데 결정적인 역할을 하며, 본격적인 전처리 단계로 넘어가기 위한 필수 절차입니다.
3단계: 컬럼명 정리, 형식 통일, 데이터 타입 변환
정제 이후에는 전처리(preprocessing) 단계로 이어집니다. 여기서 주로 수행하는 작업은 컬럼명 정리, 포맷 통일, 문자열 처리, 데이터 타입 변환 등입니다. 예를 들어 ‘설치년도’가 문자열로 입력되어 있다면 이를 숫자로 바꾸고, 공백이나 특수문자가 있는 컬럼명을 깔끔하게 정리해야 합니다.
컬럼명 정리:
df.columns = [col.strip().replace(' ', '_') for col in df.columns]
날짜 데이터 형식 변환:
df['설치년도'] = pd.to_numeric(df['설치년도'], errors='coerce')
주소 컬럼에서 시/구 정보 추출하기:
df['시'] = df['주소'].str.split().str[0]
df['구'] = df['주소'].str.split().str[1]
텍스트 데이터를 기준으로 그룹화하거나, 시각화를 위해 정리된 형식을 만드는 것도 전처리의 일부입니다. 이 과정을 통해 분석에 적합한 데이터 구조를 설계할 수 있으며, 이후 모델링이나 시각화 단계에서 높은 품질의 데이터를 제공하게 됩니다.
4단계: 전처리된 데이터로 기본 분석 및 저장하기
이제 정제와 전처리를 마친 데이터를 활용하여 간단한 분석과 시각화를 시작할 수 있습니다. 예를 들어, 연도별 공공와이파이 설치 수를 분석하거나, 구별 분포를 막대그래프로 표현해볼 수 있습니다.
예시 – 연도별 설치 수 분석:
df.groupby('설치년도')['와이파이명'].count().plot(kind='bar')
예시 – 구별 와이파이 개수 시각화:
import seaborn as sns
sns.countplot(data=df, x='구')
이후 분석에 사용할 수 있도록 데이터를 저장합니다:
df.to_csv('cleaned_wifi.csv', index=False)
이처럼 정제와 전처리 과정을 체계적으로 수행하면, 그 어떤 공공데이터라도 실질적인 인사이트 도출이 가능한 분석용 자료로 재탄생시킬 수 있습니다. 앞으로 머신러닝, 데이터 시각화, 대시보드 구축 등으로 확장하려면, 바로 이 정제와 전처리 단계가 분석의 품질을 결정짓는 핵심이라는 사실을 명심해야 합니다.
'공공데이터 활용법 & 데이터 시각화 입문' 카테고리의 다른 글
공공데이터와 머신러닝: 예측 모델 만들기 (1) | 2025.05.10 |
---|---|
다양한 시각화 그래프 유형과 활용 기준 (0) | 2025.05.09 |
초등학생도 이해하는 데이터 시각화 교육 콘텐츠 (1) | 2025.05.07 |
공공데이터와 ChatGPT를 함께 활용하는 법, 데이터 기반 아이디어 실현 전략 (2) | 2025.05.06 |
데이터 시각화 포트폴리오 만드는 팁, 실무에서 통하는 구성 전략 (2) | 2025.05.05 |