Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】Pandas DataFrameから重複行を削除する方法|drop_duplicates()の使い方

Pandas DataFrameから重複行を削除する基本

PandasのDataFrameから重複する値(重複行)を削除するには、drop_duplicates()メソッドを使用します。このメソッドは、すべての列の値が完全に一致する行を検出し、最初に出現した行だけを残して、それ以降の重複行を取り除きます。

まず、3つのカラム(Car、Place、UnitsSold)を持つDataFrameを作成しましょう。

import pandas as pd

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

重複する値を削除するには、次のようにdrop_duplicates()を呼び出すだけです。

dataFrame = dataFrame.drop_duplicates()

サンプルコード(完全版)

以下は、重複削除の前後で「Car」列の出現回数を比較できる完全なコード例です。

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

出力を見ると、インデックス3と4の行(BMW/Delhi/95、Mercedes/Hyderabad/70)がインデックス0と1と完全に一致していたため削除され、「Car」列の各ブランドのカウントもすべて1になっていることが分かります。

補足:drop_duplicates()の主な引数

drop_duplicates()メソッドには、柔軟な重複削除を可能にする便利な引数がいくつか用意されています。

  • subset:特定の列だけを対象に重複判定を行います。例:df.drop_duplicates(subset=['Car'])とすれば、Car列の値が同じ行をすべて重複とみなします。
  • keep:どの行を残すかを指定します。デフォルトは'first'(最初の行を残す)です。'last'を指定すると最後の行を残し、Falseを指定すると重複している行をすべて削除します。
  • inplaceTrueを指定すると、新しいオブジェクトを作成せずに元のDataFrameを直接変更します。

これらの引数を組み合わせることで、「特定のキー列をもとに最新のレコードだけを残す」といった実務的なデータクレンジングも簡単に実現できます。

  1. Python Pandasでnull以外の値を前方へ転送する方法(ffillの使い方)

    Pandasのfillna()で欠損値(NaN)を前方向きに埋める Pandasでは、fillna()メソッドのmethodパラメータを使うことで、null以外の値を前方(上の行から下の行へ)に転送できます。前方補完(forward fill)を行うには、値としてffillを指定します。 fillna(method=ffill) なお、Pandas 2.1以降ではmethod引数は非推奨となっているため、専用メソッドのffill()を使うことが推奨されています。どちらも同じ結果が得られます。 サンプルデータの準備 ここでは、一部のセルにNaN(欠損値)を含むCSVファイル「SalesData.

  2. 【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)

    はじめに PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。 本記事では、fillna()メソッドのmethodパラメータにbfillを指定して、null以外の値を後方から伝播させる方法を解説します。 bfillの基本的な使い方 後方補完を行うには、fillna()メソッドの引数に以下のように指定します。 fillna(method=bfill) bfillは「backward f