Chapter 20

Pandasで集計

poclabweb
poclabweb
2022.10.09に更新
このチャプターの目次

9. 集計と重複処理

集計

df.sort_values(by='molecular_weight').head(3)

df.sort_values(by='molecular_weight',ascending=False).head(3)

【補足説明】集計などは、google colabolatoryだとコードを書かなくてもできる

左下のボタンをクリックする

操作可能なテーブルになったあとに、列名のところをクリックすると昇順や降順で並び替えができる。

重複処理

# ユニークな要素の個数を整数int型で返す
df.nunique()

この例だと、idが492行あるのにたいして、smilesが489行なので重複があることがわかる。

# smilesで重複している様子を確認
df[df["smiles"].duplicated(keep=False)]

重複を表示させると、

  • idの35とidの55はnameが異なっているが、smilesやmolecular_weightは同じ
  • idが456と466はnameの部分に、4が先頭についているかどうかだけが異なっている。
  • idが605と626はnameの部分が、sesaminとepisesaminと個なっている。

手動で削除

#手動で、行番号で削除
df = df.drop(df.index[[310]])
df[df["smiles"].duplicated(keep=False)]

indexが300、idと表示されている番号が456、nameが"4-p-Coumaroylquinic acid"の行を削除してみる。ここでは、indexで削除するものをしてdfを上書きした。そして、表示させてみると重複がなくなっているのがわかる。

自動で削除

# "smiles"が重複しているものを削除してdfを上書き
df = df.drop_duplicates(subset='smiles')
df.nunique()

出てきた最初のものだけを残したいならば、以下のコードで自動で削除もできる。