데이터 분석에서 깨끗한 데이터는 정확한 결과를 얻는 데 필수적입니다. Pandas는 데이터의 결측값을 처리하고, 중복 데이터를 제거하며, 데이터 형식을 변환하는 등의 다양한 데이터 정제 기능을 제공합니다. 이 글에서는 Pandas를 활용하여 데이터를 효과적으로 정리하는 방법을 알아보겠습니다.
1. 결측값(NaN) 처리
데이터셋에는 종종 누락된 값이 포함되어 있습니다. Pandas는 isnull()과 dropna(), fillna()를 활용해 결측값을 확인하고 처리할 수 있습니다.
1.1 결측값 확인
import pandas as pd
# 예제 데이터프레임 생성
data = {
'Name': ['Alice', 'Bob', None, 'David'],
'Age': [25, 30, None, 40],
'City': ['New York', None, 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
# 결측값 확인
df.isnull().sum()
출력 결과:
Name 1
Age 1
City 1
dtype: int64
1.2 결측값 제거
df_cleaned = df.dropna()
print(df_cleaned)
1.3 결측값 대체
df_filled = df.fillna({'Name': 'Unknown', 'Age': df['Age'].mean(), 'City': 'Undefined'})
print(df_filled)
2. 중복 데이터 제거
중복된 데이터는 분석 결과에 왜곡을 줄 수 있으므로 drop_duplicates()를 사용해 제거할 수 있습니다.
2.1 중복 데이터 확인
df.duplicated().sum()
2.2 중복 행 제거
df_cleaned = df.drop_duplicates()
print(df_cleaned)
3. 데이터 형식 변환
데이터가 올바른 형식으로 저장되지 않으면 연산이나 분석에 문제가 발생할 수 있습니다. Pandas의 astype()을 활용해 데이터 타입을 변환할 수 있습니다.
3.1 데이터 타입 확인
print(df.dtypes)
3.2 데이터 타입 변환
df['Age'] = df['Age'].astype(float) # 정수형 -> 실수형 변환
3.3 날짜 데이터 변환
df['Date'] = pd.to_datetime(df['Date'])
4. 문자열 데이터 정리
텍스트 데이터에서 불필요한 공백, 특수문자 등을 제거하여 일관된 데이터로 정리할 수 있습니다.
4.1 공백 제거
df['Name'] = df['Name'].str.strip()
4.2 대소문자 변환
df['City'] = df['City'].str.lower() # 소문자로 변환
4.3 특정 문자 제거
df['City'] = df['City'].str.replace('[^a-zA-Z]', '', regex=True) # 알파벳만 남기기
5. 이상치(Outliers) 처리
데이터에 비정상적으로 큰 값이나 작은 값이 포함되었는지 확인하고 조정하는 것도 중요합니다.
5.1 이상치 확인 (기초 통계 분석)
print(df.describe())
5.2 특정 값 기준 필터링
df_filtered = df[df['Age'] < 100] # 100세 이상인 값 제거
6. 데이터 정리 최적화 실무 팁
* 결측값과 중복 데이터를 먼저 정리한 후 분석 시작하기
* 데이터 타입을 적절하게 변환하여 연산 속도 향상
* 정형화된 문자열 데이터를 유지하여 가독성 높이기
* 데이터를 시각적으로 탐색하여 이상치 파악하기
결론
Pandas를 활용한 데이터 정리는 데이터 분석의 필수 과정입니다. 결측값 처리, 중복 제거, 데이터 타입 변환, 문자열 정리, 이상치 제거 등의 기법을 통해 보다 신뢰할 수 있는 데이터를 확보할 수 있습니다. 이 가이드를 따라 Pandas의 데이터 정리 기능을 마스터하고, 더욱 정확한 분석을 수행해 보세요.