duplicatedとは
duplicatedはpandasのメソッドで、DataFrameやSeriesから重複した要素を含む行を検出・抽出するために使用されます。
基本的な使い方
duplicatedメソッドは重複した行をTrueとするブール値のSeriesを返します。デフォルトでは、すべての列の要素が一致していると重複行と判定されます。
print(df.duplicated())
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
得られたSeriesを使って、元のDataFrameから重複した行のデータを抽出できます。
print(df[df.duplicated()])
#    name  age state  point
# 6  Dave   68    TX     70
残す行を選択: 引数keep
デフォルトは引数 keep='first' で、重複した最初の行はFalseになります。最初(first)の行がkeepされるイメージです。keep='last' とすると、重複した最後の行がFalseになります。最後(last)の行がkeepされるイメージです。
print(df.duplicated())  # keep='first' is default
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
print(df.duplicated(keep='last'))
# 0    False
# 1    False
# 2    False
# 3     True
# 4    False
# 5    False
# 6    False
# dtype: bool
keep=False とすると、重複した行すべてがTrueとなります。
print(df.duplicated(keep=False))
# 0    False
# 1    False
# 2    False
# 3     True
# 4    False
# 5    False
# 6     True
# dtype: bool
重複を判定する列を指定: 引数subset
デフォルトではすべての列の要素が一致している行が重複行と判定されTrueとなります。引数 subset で判定する列を指定できます。
print(df.duplicated(subset='state'))
# 0    False
# 1    False
# 2     True
# 3    False
# 4     True
# 5     True
# 6     True
# dtype: bool
リストで複数の列を指定することも可能です。指定したすべての列の要素が一致している行がTrueとなります。
print(df.duplicated(subset=['state', 'point']))
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
重複した行の数をカウント
duplicatedで得られたSeriesのTrueをカウントすると、重複した行の数が確認できます。
drop_duplicatesとは
drop_duplicatesはpandasのメソッドで、DataFrameやSeriesから重複した要素を含む行を削除するために使用されます。
基本的な使い方
drop_duplicatesメソッドは重複した行を削除した新しいDataFrameを返します。デフォルトでは、すべての列の要素が一致していると重複行と判定されます。
print(df.drop_duplicates())
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
残す行を選択: 引数keep
デフォルトは引数 keep='first' で、重複した最初の行が残ります。最初(first)の行がkeepされるイメージです。keep='last' とすると、重複した最後の行が残ります。最後(last)の行がkeepされるイメージです。
print(df.drop_duplicates())  # keep='first' is default
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
print(df.drop_duplicates(keep='last'))
#     brand style  rating
# 1  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 4  Indomie  pack     5.0
keep=False とすると、重複した行すべてが削除されます。
print(df.drop_duplicates(keep=False))
#     brand style  rating
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
重複を判定する列を指定: 引数subset
デフォルトではすべての列の要素が一致している行が重複行と判定されます。引数 subset で判定する列を指定できます。
print(df.drop_duplicates(subset='brand'))
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
リストで複数の列を指定することも可能です。指定したすべての列の要素が一致している行が削除されます。
print(df.drop_duplicates(subset=['brand', 'style']))
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
duplicatedとdrop_duplicatesの基本的な使い方
duplicatedとdrop_duplicatesは、pandasのDataFrameやSeriesから重複した行を検出・削除するためのメソッドです。
duplicatedの基本的な使い方
duplicatedメソッドは、重複した行をTrueとするブール値のSeriesを返します。デフォルトでは、すべての列の要素が一致していると重複行と判定されます。
print(df.duplicated())
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
得られたSeriesを使って、元のDataFrameから重複した行のデータを抽出できます。
print(df[df.duplicated()])
#    name  age state  point
# 6  Dave   68    TX     70
drop_duplicatesの基本的な使い方
drop_duplicatesメソッドは、重複した行を削除した新しいDataFrameを返します。デフォルトでは、すべての列の要素が一致していると重複行と判定されます。
print(df.drop_duplicates())
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
引数keepの活用
duplicatedとdrop_duplicatesメソッドの引数keepは、重複した行の中でどの行を残すかを指定するために使用されます。
duplicatedの引数keepの活用
duplicatedメソッドでは、引数 keep='first' がデフォルトで、重複した最初の行はFalseになります。最初(first)の行がkeepされるイメージです。keep='last' とすると、重複した最後の行がFalseになります。最後(last)の行がkeepされるイメージです。
print(df.duplicated())  # keep='first' is default
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
print(df.duplicated(keep='last'))
# 0    False
# 1    False
# 2    False
# 3     True
# 4    False
# 5    False
# 6    False
# dtype: bool
keep=False とすると、重複した行すべてがTrueとなります。
print(df.duplicated(keep=False))
# 0    False
# 1    False
# 2    False
# 3     True
# 4    False
# 5    False
# 6     True
# dtype: bool
drop_duplicatesの引数keepの活用
drop_duplicatesメソッドでは、引数 keep='first' がデフォルトで、重複した最初の行が残ります。最初(first)の行がkeepされるイメージです。keep='last' とすると、重複した最後の行が残ります。最後(last)の行がkeepされるイメージです。
print(df.drop_duplicates())  # keep='first' is default
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
print(df.drop_duplicates(keep='last'))
#     brand style  rating
# 1  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 4  Indomie  pack     5.0
keep=False とすると、重複した行すべてが削除されます。
print(df.drop_duplicates(keep=False))
#     brand style  rating
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
# 4  Indomie  pack     5.0
引数subsetの活用
duplicatedとdrop_duplicatesメソッドの引数subsetは、重複を判定する列を指定するために使用されます。
duplicatedの引数subsetの活用
duplicatedメソッドでは、デフォルトではすべての列の要素が一致している行が重複行と判定されます。引数 subset で判定する列を指定できます。
print(df.duplicated(subset='state'))
# 0    False
# 1    False
# 2     True
# 3    False
# 4     True
# 5     True
# 6     True
# dtype: bool
リストで複数の列を指定することも可能です。指定したすべての列の要素が一致している行がTrueとなります。
print(df.duplicated(subset=['state', 'point']))
# 0    False
# 1    False
# 2    False
# 3    False
# 4    False
# 5    False
# 6     True
# dtype: bool
drop_duplicatesの引数subsetの活用
drop_duplicatesメソッドでは、デフォルトではすべての列の要素が一致している行が重複行と判定されます。引数 subset で判定する列を指定できます。
print(df.drop_duplicates(subset='brand'))
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
リストで複数の列を指定することも可能です。指定したすべての列の要素が一致している行が削除されます。
print(df.drop_duplicates(subset=['brand', 'style']))
#     brand style  rating
# 0  Yum Yum   cup     4.0
# 2  Indomie   cup     3.5
# 3  Indomie  pack    15.0
重複行の数をカウントする方法
duplicatedメソッドで得られたSeriesのTrueをカウントすると、重複した行の数が確認できます。
特定の列における重複行の数をカウントする
特定の列における重複行の数をカウントするには、以下のようにします。
print(df['state'].duplicated().sum())
# 3
DataFrame全体における重複行の数をカウントする
DataFrame全体における重複行の数をカウントするには、以下のようにします。
print(df.duplicated().sum())
# 1
まとめ
pandasのduplicatedとdrop_duplicatesメソッドは、DataFrameやSeriesから重複した行を検出・削除するための強力なツールです。
- duplicatedメソッドは、重複した行をTrueとするブール値のSeriesを返します。
- drop_duplicatesメソッドは、重複した行を削除した新しいDataFrameを返します。
これらのメソッドは、引数keepとsubsetを使って、どの行を残すか、どの列を考慮するかを指定できます。
- 引数 keep='first'は、重複した最初の行を残します。
- 引数 keep='last'は、重複した最後の行を残します。
- 引数 keep=Falseは、重複した行すべてを削除します。
- 引数 subsetで判定する列を指定できます。
また、duplicatedで得られたSeriesのTrueをカウントすることで、重複した行の数を確認できます。
これらのメソッドを活用することで、データの重複を効率的に処理し、データ分析をよりスムーズに進めることができます。