データ分析を行う際に、データフレームから重複行を取り除いてユニークな行を取得することはよくあります。
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
注意点
inplace
の使用
データフレームを直接変更すると元に戻せなくなるため、必要に応じてinplace=False
を利用します。- 空白や欠損値の扱い
欠損値(NaN)はデフォルトで同じ値とみなされ、削除対象になります。
まとめ
Pandasのdrop_duplicates
は、シンプルな操作でデータフレームをユニーク化するためのメソッドです。今回紹介した方法を活用すれば、特定の分析条件やユースケースに応じて柔軟に重複を管理できます。