[파이썬] pandas에서 데이터 클리닝

데이터 클리닝은 데이터 과학 및 분석 작업에서 중요한 단계입니다. 데이터 클리닝을 통해 결측치, 이상치, 중복된 데이터 등을 처리하고 정확한 분석을 수행할 수 있습니다. 이번 글에서는 Python의 pandas 라이브러리를 사용하여 데이터 클리닝을 어떻게 수행하는지 알아보겠습니다.

1. 데이터 불러오기

가장 먼저 해야 할 일은 데이터를 불러오는 것입니다. pandas는 다양한 데이터 포맷을 지원하며, 예를 들어 CSV, Excel, SQL 등 다양한 형식의 데이터를 쉽게 불러올 수 있습니다. 아래는 CSV 파일을 불러오는 예제입니다.

import pandas as pd

# 데이터 불러오기
data = pd.read_csv('data.csv')

2. 결측치 처리

결측치는 데이터셋에서 빠져 있는 값을 의미합니다. 결측치가 있는 경우, 분석 결과에 왜곡을 일으킬 수 있으므로 적절한 처리가 필요합니다. pandas는 dropna 함수를 통해 결측치가 있는 행 또는 열을 제거할 수 있습니다. 또는 fillna 함수를 사용하여 결측치를 다른 값으로 대체할 수도 있습니다. 예를 들어, 결측치를 평균값으로 대체하는 코드는 다음과 같습니다.

# 결측치 대체
data['age'].fillna(data['age'].mean(), inplace=True)

3. 이상치 처리

이상치는 데이터셋에서 일반적인 패턴과 다른 값입니다. 이상치가 분석 결과에 부정적인 영향을 줄 수 있으므로, 적절한 처리가 필요합니다. pandas는 이상치를 찾고 처리하는 다양한 방법을 제공합니다. 예를 들어, Tukey’s fences 방법을 사용하여 이상치를 제거하는 코드는 다음과 같습니다.

# 이상치 제거
Q1 = data['age'].quantile(0.25)
Q3 = data['age'].quantile(0.75)
IQR = Q3 - Q1
data = data[(data['age'] >= Q1 - 1.5*IQR) & (data['age'] <= Q3 + 1.5*IQR)]

4. 중복된 데이터 처리

중복된 데이터는 분석 결과에 왜곡을 일으킬 수 있으므로 제거해야 합니다. pandas는 duplicated 함수를 사용하여 중복된 행을 찾을 수 있습니다. 중복된 행을 제거하기 위해서는 drop_duplicates 함수를 사용합니다. 예를 들어, ‘name’ 열을 기준으로 중복된 행을 제거하는 코드는 다음과 같습니다.

# 중복된 데이터 제거
data.drop_duplicates(subset='name', inplace=True)

5. 데이터 정규화

데이터 클리닝 후에는 데이터를 정규화하여 분석에 적합한 형태로 변환해야 합니다. pandas는 normalize 함수를 통해 데이터를 정규화할 수 있습니다. 예를 들어, ‘age’ 열을 최소-최대 정규화하는 코드는 다음과 같습니다.

# 데이터 정규화
data['age_normalized'] = (data['age'] - data['age'].min()) / (data['age'].max() - data['age'].min())

결론

pandas는 데이터 클리닝 작업을 효율적으로 처리할 수 있는 강력한 라이브러리입니다. 이번 글에서는 데이터 불러오기, 결측치 처리, 이상치 처리, 중복된 데이터 처리, 데이터 정규화에 대해 알아보았습니다. 데이터 클리닝은 데이터 과학 및 분석 작업에서 필수적인 과정이며, pandas를 사용하면 간편하게 데이터를 클리닝할 수 있습니다.