IT業務効率化

pandasのDataFrameで欠損値を探す・見つける

欠損値がどこにあるか特定する

この記事で紹介することは、欠損のある行と列だけにDataFrameを整形し直すことです。

まず仮のデータフレームを以下のように作ります。

import pandas as pd
data_json = {"name": ["hira", "yuki", "shiro", "kuma"],
             "height": [156, None, 170, 144],
             "weight": [60, None, 56, None]}
df  = pd.DataFrame(data_json)

欠損のある「列」

df.isna().any()

出力は以下のようになります。

name      False
height     True
weight     True
dtype: bool

欠損のある「行」

df.isna().any(axis=1)

出力は以下のようになります。

0    False
1     True
2    False
3     True
dtype: bool

欠損を見つける

df[df.isna().any(axis=1)]

上記のコードで欠損のある行に限定してから

df.columns[df.isna().any()]

上記のコードの欠損のある行に限定します。つまり以下のようにします。

df[df.isna().any(axis=1)][df.columns[df.isna().any()]]

これで欠損のあるDataFrameに限定されます。

ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki