データ分析を行う際に、データフレームから重複行を取り除いてユニークな行を取得することはよくあります。
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は、シンプルな操作でデータフレームをユニーク化するためのメソッドです。今回紹介した方法を活用すれば、特定の分析条件やユースケースに応じて柔軟に重複を管理できます。
 
       
       
       
  
  
  
  
