実務に生かすPythonサンプル

【pandas】重複したDataFrameの行を確認・削除【逆引きデータ分析】

こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。

今回は、pandasを使ったデータ分析を行いたい人の疑問に答えます。

pandasで重複行を削除したい。データ量が多いので、いきなり全部削除する前に対象となる重複行の一覧を確認したい。部分的に重複する行も対象にするにはどうすればいい?

大学の研究・自分の趣味・業務で、合わせて5年以上Pythonを使ってきた経験を生かして、データ分析ライブラリpandasで重複行を確認・削除する方法を紹介します。

この記事はこんな方におすすめ!

  • 用意したデータに重複があり、それを削除してからデータ分析を行いたい方
  • データ量が多いので、重複行の一覧をまず確認したい方
  • pandasで部分的に(一部のカラムだけ)重複する行も対象にして削除する方法を知りたい方

サンプルデータ【pandas.DataFrame】

サンプルデータを作成します。

 

duplicated()で(完全)重複行を確認する

DataFrameに対してduplicated()を使うと、重複する行について残すか残さないか決めるブール値のSeriesを作成できます

引数keepはデフォルトでは”keep=’first'”で、重複する最初の行がFalseになります。

最初(first)の行が重複ではない(False)ということで、keepされるイメージですね。

keepは’first’, ‘last’, Falseのいずれかの値を取ります。

今回はFalseを指定=「重複した行全てをTrue」にして、削除する対象にしましょう。

 

ブール値のSeries、is_complete_duplicateを使って、完全に重複する行をdfから取り出しましょう

 

duplicated()で(部分)重複行を確認する

部分的に重複する行を確認したい場合は、dfからSeriesを指定してduplicated()を適用することができます

例えば、name1とname2がどちらも同じ行を「重複」と考えたい場合は、以下のようにブール値のSeriesを作成できます。

引数subsetを使って、指定した列が全て一致している行を「重複」と見なすこともできます。

部分的に重複する行を、以下のように確認してみましょう。

 

pandasで重複した行を削除する

繰り返しになりますが、引数keepはデフォルトでは”keep=’first'”で、重複する最初の行がFalseになります。

 

論理否定演算子”~”で反転させると、重複する2回目以上の行だけがFalseになるので、dfから削除することができます。

 

drop_duplicates()で同じ結果を得ることができます。

 

関連記事:こちらも読まれています

【2019年版】Pythonインストール・Mac編【長く安全に使える環境構築】

Pythonを快適に使いこなすMac環境【現役エンジニアおすすめはPro 13インチ】

アフィリエイトサイトの成果レポートを1クリックで集計【自動化で収益アップ?】

 

▼経験の棚卸しで納得のキャリアを▼
▼相場に消耗しない資産運用▼
マネースクエア
Pythonチュートリアル

Pythonをインストール、サンプルを通して使い方を学んだら、次は実際に何か作ってみませんか?

手元のパソコンで環境構築不要・Webブラウザだけで、パッと見た人の印象に残るコンテンツを作る手順を一から説明しています。

チュートリアルを見てみる

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください