Pandasで「欠損値(NaNやNone)が含まれているかどうか確認する方法」はいくつかあり、用途によって使い分けるのがポイントです。
ここでは基本的なメソッドから、実務で便利な応用まで順を追って詳しく解説します。
目次
欠損値を確認する基本メソッド
isnull()
/ isna()
- 役割: DataFrameやSeriesに対して「欠損値かどうか」を真偽値(True/False)で返す。
isnull()
とisna()
は完全に同じ動作です。
import pandas as pd
import numpy as np
df = pd.DataFrame({
"A": [1, 2, np.nan],
"B": ["x", None, "z"]
})
print(df.isnull())
欠損値の数を確認する
.sum()
を組み合わせる
各列ごとに何個の欠損値があるか数えることができます。
df.isnull().sum()
列単位での欠損状況がすぐわかります。
全体の欠損数を確認
df.isnull().sum().sum()
データ全体で「いくつの欠損値があるか」を確認可能。
欠損値の有無を確認する
DataFrame全体に1つでもNaNがあるか?
df.isnull().values.any()
# True → 1つでも欠損がある
# False → 欠損なし
列ごとに「欠損が存在するかどうか」だけ確認
df.isnull().any()
欠損値を含む行・列を確認する
欠損値を含む行だけ抽出
df[df.isnull().any(axis=1)]
axis=1
は「行ごとに判定」という意味。
欠損がある行だけ取り出せます。
欠損値を含む列名を取得
missing_cols = df.columns[df.isnull().any()].tolist()
print(missing_cols)
# ['A', 'B']
実務で便利な方法
info()
を使ってざっくり確認
df.info()
各列の「非欠損値数 (Non-Null Count)」を表示してくれるため、どの列に欠損があるか直感的に分かります。
pd.isna()
の直接利用
pd.isna(df["A"])
Series単位で欠損確認する場合に便利。
ビジュアルで欠損値を確認(応用)
もし可視化したい場合は、missingno
ライブラリが便利です。
import missingno as msno
msno.matrix(df)
欠損がどの部分に集中しているか、グラフィクで把握できます。
まとめ
- 欠損位置を確認 →
isnull()
/isna()
- 列ごとの欠損数を集計 →
df.isnull().sum()
- 全体に欠損があるかだけ確認 →
df.isnull().values.any()
- infoでざっくり確認 →
df.info()
- ビジュアルで確認 →
missingno
以上、PythonのPandasで欠損値が含まれているか確認する方法についてでした。
最後までお読みいただき、ありがとうございました。