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をカウントすることで、重複した行の数を確認できます。
これらのメソッドを活用することで、データの重複を効率的に処理し、データ分析をよりスムーズに進めることができます。