본문 바로가기

공부/판다스(Pandas)

Pandas로 배우는 데이터 전처리(정렬, 필터링, 중복 처리, 변환과 치환)

 

데이터 분석에서 데이터 전처리는 필수적인 단계입니다. 잘 전처리된 데이터는 분석의 신뢰도를 높이고, 더 나아가 올바른 인사이트를 도출하는 데 중요한 역할을 합니다. Pandas는 이러한 전처리 과정을 쉽게 도와주는 강력한 도구입니다. 이번 포스팅에서는 데이터 정렬, 필터링, 중복 처리, 그리고 데이터 변환과 치환에 대해 다루겠습니다.

 

1. 데이터 정렬 및 필터링

1.1 데이터 정렬

데이터를 특정 열을 기준으로 정렬하면 패턴을 파악하거나 데이터를 깔끔하게 정리하는 데 큰 도움이 됩니다. Pandas의 sort_values() 메서드를 사용하여 데이터를 정렬할 수 있습니다.

import pandas as pd

# 샘플 데이터 생성
data = {
    'id': [1, 2, 2, 3, 4],
    'price': ['100', '200', '200', '150', '300'],
    'status': ['pending', 'complete', 'pending', 'complete', 'pending']
}

df = pd.DataFrame(data)

# 'price' 열을 오름차순으로 정렬
df['price'] = df['price'].astype(int)  # 데이터 타입 변환
df_sorted = df.sort_values(by='price')
print(df_sorted)

 

결과:

   id  price    status
0   1    100   pending
3   3    150  complete
1   2    200  complete
2   2    200   pending
4   4    300   pending

 

위 예제에서 price 열을 기준으로 오름차순으로 정렬하였습니다. 데이터가 잘 정렬된 것을 볼 수 있죠.

1.2 데이터 필터링

필터링을 사용하면 원하는 조건에 맞는 데이터만 추출할 수 있습니다. 아래 코드에서는 price가 150 이상인 데이터만 필터링했습니다.

# 'price'가 150 이상인 데이터 필터링
filtered_df = df[df['price'] >= 150]
print(filtered_df)

 

 

결과:

   id  price    status
1   2    200  complete
2   2    200   pending
3   3    150  complete
4   4    300   pending

 

이렇게 조건을 적용해 원하는 데이터만 추출할 수 있습니다. 데이터 전처리에서 필터링은 불필요한 데이터를 제거하고 분석에 필요한 데이터만 선택하는 데 유용합니다.

 

2. 중복 데이터 처리

데이터 분석에서 중복된 데이터는 종종 문제를 일으킬 수 있습니다. 중복 데이터를 처리하는 방법으로 Pandas는 duplicated()와 drop_duplicates()를 제공합니다.

2.1 중복 데이터 확인

먼저 데이터에 중복된 값이 있는지 확인해 보겠습니다.

# 중복된 데이터 확인
print(df.duplicated())
print("중복된 행의 개수:", df.duplicated().sum())

 

결과:

0    False
1    False
2    False
3    False
4    False
dtype: bool

중복된 행의 개수: 0

 

결과를 보면 이 데이터에서는 중복된 행이 없다는 것을 확인할 수 있습니다. 만약 중복된 데이터가 있었다면 True가 반환되었을 것입니다.

2.2 중복 데이터 제거

중복 데이터를 제거하는 방법은 매우 간단합니다. drop_duplicates() 메서드를 사용하여 중복된 행을 제거할 수 있습니다.

# 중복 데이터 제거
df_no_duplicates = df.drop_duplicates()
print(df_no_duplicates)

 

결과:

   id  price    status
0   1    100   pending
1   2    200  complete
2   2    200   pending
3   3    150  complete
4   4    300   pending

 

이 데이터에서는 중복된 행이 없기 때문에 결과가 동일하게 나옵니다.

 

3. 데이터 변환 및 치환

데이터 변환과 치환은 데이터 전처리에서 중요한 작업입니다. Pandas의 astype() 메서드를 사용해 데이터 타입을 변환할 수 있으며, replace() 메서드를 사용해 값을 치환할 수 있습니다.

3.1 데이터 타입 변환

price 열의 데이터 타입을 문자열에서 실수형(float)으로 변환해 보겠습니다.

# 'price' 열을 실수형으로 변환
df['price'] = df['price'].astype(float)
print(df)

 

결과:

   id  price    status
0   1  100.0   pending
1   2  200.0  complete
2   2  200.0   pending
3   3  150.0  complete
4   4  300.0   pending

 

이제 price가 실수형 데이터로 변환된 것을 확인할 수 있습니다.

3.2 값 치환

status 열의 값을 'pending'에서 'complete'로 치환해 보겠습니다.

# 'status' 열의 'pending' 값을 'complete'로 치환
df['status'] = df['status'].replace('pending', 'complete')
print(df)

 

결과:

   id  price    status
0   1  100.0  complete
1   2  200.0  complete
2   2  200.0  complete
3   3  150.0  complete
4   4  300.0  complete

 

모든 'pending' 값이 'complete'로 치환된 것을 볼 수 있습니다. 이처럼 데이터를 빠르게 수정하거나 변환할 수 있습니다.