スポンサーリンク

【Python】Pandas データフレームの重複削除(ユニーク化)

記事内に広告が含まれています。

データ分析を行う際に、データフレームから重複行を取り除いてユニークな行を取得することはよくあります。

Pandasは、この操作を簡単かつ効率的に行えるメソッドを提供しています。

スポンサーリンク

drop_duplicates メソッド

Pandasでデータフレームをユニーク化するには、drop_duplicates メソッドを使用します。

このメソッドは、データフレーム内の重複行を削除し、ユニークな行だけを残します。

基本構文

df.drop_duplicates(subset=None, keep='first', inplace=False)
  • subset
    重複を判定する列を指定します。デフォルトでは全列が対象です。
  • keep
    重複行のうちどれを保持するかを指定します。
    • 'first'(デフォルト):最初の出現を保持
    • 'last':最後の出現を保持
    • False:すべて削除
  • inplace
    元のデータフレームを直接変更するかどうか。
    Trueにすると元のデータフレームが変更されます。
スポンサーリンク

使用例

データ準備

以下のデータフレームを例に使用します。

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Alice', 'David', 'Alice'],
    'Age': [25, 30, 25, 35, 25],
    'City': ['New York', 'Los Angeles', 'New York', 'Chicago', 'New York']
}

df = pd.DataFrame(data)
print(df)

出力

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles
2  Alice   25     New York
3  David   35      Chicago
4  Alice   25     New York

全列で重複を削除

デフォルトではすべての列を基準に重複を削除します。

unique_df = df.drop_duplicates()
print(unique_df)

出力

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles
3  David   35      Chicago

特定の列を基準に重複を削除

例えば、Name 列だけを基準にしてユニーク化したい場合、subset 引数を使用します。

unique_df = df.drop_duplicates(subset=['Name'])
print(unique_df)

出力

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles
3  David   35      Chicago

複数列で重複を判定

複数の列を基準にユニーク化する場合、subset に列名リストを渡します。

unique_df = df.drop_duplicates(subset=['Name', 'City'])
print(unique_df)

出力

    Name  Age         City
0  Alice   25     New York
1    Bob   30  Los Angeles
3  David   35      Chicago

重複行の最後を保持

keep 引数を 'last' にすると、最後の出現を保持します。

unique_df = df.drop_duplicates(keep='last')
print(unique_df)

出力

    Name  Age         City
1    Bob   30  Los Angeles
3  David   35      Chicago
4  Alice   25     New York

重複行を完全に削除

keep=False を指定すると、重複行がすべて削除されます。

unique_df = df.drop_duplicates(keep=False)
print(unique_df)

出力

    Name  Age         City
1    Bob   30  Los Angeles
3  David   35      Chicago

ユニークな値の確認方法

特定の列に含まれるユニークな値を確認したい場合は、unique メソッドを使用します。

unique_names = df['Name'].unique()
print(unique_names)

出力

['Alice' 'Bob' 'David']

ユニークな行数をカウント

ユニークな行数を確認するには、nunique メソッドを使うか、drop_duplicates と組み合わせます。

列単位でユニークな値をカウント

unique_counts = df.nunique()
print(unique_counts)

出力

Name    3
Age     3
City    3
dtype: int64

全体のユニークな行数をカウント

unique_row_count = df.drop_duplicates().shape[0]
print(unique_row_count)

出力

3

注意点

  1. inplace の使用
    データフレームを直接変更すると元に戻せなくなるため、必要に応じて inplace=False を利用します。
  2. 空白や欠損値の扱い
    欠損値(NaN)はデフォルトで同じ値とみなされ、削除対象になります。

まとめ

Pandasのdrop_duplicatesは、シンプルな操作でデータフレームをユニーク化するためのメソッドです。今回紹介した方法を活用すれば、特定の分析条件やユースケースに応じて柔軟に重複を管理できます。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました