Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas - DataFrame에서 중복 데이터 제거하는 방법 (drop_duplicates)

Pandas DataFrame에서 중복된 행을 제거하려면 drop_duplicates() 메서드를 사용하면 됩니다. 이 메서드는 모든 열의 값이 완전히 동일한 중복 행을 찾아 제거하고, 첫 번째로 등장한 행만 남겨둡니다.

DataFrame 생성하기

먼저 예제로 사용할 3개의 열(Car, Place, UnitsSold)을 가진 DataFrame을 만들어 보겠습니다.

dataFrame = pd.DataFrame({
    'Car': ['BMW', 'Mercedes', 'Lamborghini', 'BMW', 'Mercedes', 'Porsche'],
    'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Delhi', 'Hyderabad', 'Mumbai'],
    'UnitsSold': [95, 70, 80, 95, 70, 90]
})

위 DataFrame을 보면 BMW-Delhi-95와 Mercedes-Hyderabad-70 조합이 각각 두 번씩 나타나는 것을 확인할 수 있습니다. 이제 drop_duplicates()를 호출하여 중복 값을 제거합니다.

dataFrame = dataFrame.drop_duplicates()

전체 예제 코드

다음은 중복 제거 전후의 데이터 변화를 확인할 수 있는 전체 코드입니다.

import pandas as pd

# DataFrame 생성
dataFrame = pd.DataFrame({
    'Car': ['BMW', 'Mercedes', 'Lamborghini', 'BMW', 'Mercedes', 'Porsche'],
    'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Delhi', 'Hyderabad', 'Mumbai'],
    'UnitsSold': [95, 70, 80, 95, 70, 90]
})

print("Dataframe...\n", dataFrame)

# Car 열의 빈도수 계산
count = dataFrame['Car'].value_counts()
print("\nCount in column Car")
print(count)

# 중복 값 제거
dataFrame = dataFrame.drop_duplicates()
print("\nUpdated DataFrame after removing duplicates...\n", dataFrame)

# 중복 제거 후 Car 열의 빈도수 다시 계산
count = dataFrame['Car'].value_counts()
print("\nCount in column Car")
print(count)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

Dataframe...
           Car        Place   UnitsSold
0          BMW        Delhi          95
1     Mercedes    Hyderabad          70
2  Lamborghini   Chandigarh          80
3          BMW        Delhi          95
4     Mercedes    Hyderabad          70
5      Porsche       Mumbai          90

Count in column Car
BMW            2
Mercedes       2
Porsche        1
Lamborghini    1
Name: Car, dtype: int64

Updated DataFrame after removing duplicates...
           Car        Place   UnitsSold
0          BMW        Delhi          95
1     Mercedes    Hyderabad          70
2  Lamborghini   Chandigarh          80
5      Porsche       Mumbai          90

Count in column Car
BMW           1
Porsche       1
Lamborghini   1
Mercedes      1
Name: Car, dtype: int64

결과 분석

출력 결과를 살펴보면 다음과 같은 변화가 있었음을 알 수 있습니다.

중복 제거 전: 총 6개의 행이 있으며, BMW와 Mercedes가 각각 2번씩 등장합니다.

중복 제거 후: 인덱스 3과 4의 행(완전히 동일한 내용)이 삭제되어 4개의 행만 남았고, 모든 차량이 1번씩만 등장합니다.

참고: drop_duplicates()의 유용한 옵션

drop_duplicates() 메서드는 몇 가지 유용한 매개변수를 지원합니다.

subset: 특정 열만 기준으로 중복을 판단하고 싶을 때 사용합니다. 예를 들어 dataFrame.drop_duplicates(subset=['Car'])처럼 작성하면 Car 열의 값이 동일한 행들을 제거합니다.

keep: 어떤 행을 남길지 결정합니다. 기본값은 'first'(첫 번째 행 유지)이며, 'last'(마지막 행 유지) 또는 False(중복된 모든 행 제거)로 설정할 수 있습니다.

inplace: True로 설정하면 원본 DataFrame을 직접 수정하여 새로운 객체를 반환하지 않습니다.