pd.isnaとpd.isnull
pd.isna() と pd.isnull() は同じものです。
GitHub のコード上でもそうなっています。
isnull = isna
pd.DataFrame.isna() と pd.DataFrame.isnull() も同じものです。
DataFrame.isnull is an alias for DataFrame.isna.
pandas.isna
pandas.isnull
pandas.DataFrame.isna
pandas.DataFrame.isnull
isna()で引っかかるもの
isna() で何を見つけられるか、見てみます。
0、空文字、スペース などは引っかかりません。
Python
print(pd.isna(pd.NA))
# True
print(pd.isna(np.nan))
# True
print(pd.isna(math.nan))
# True
print(pd.isna(None))
# True
print(pd.isna(0))
# False
print(pd.isna(''))
# False
print(pd.isna(' '))
# False
欠損値をカウントする
機械学習をするときに、特徴量に欠損値が無いか調べるときに使いたくなるはずです。
Python
# DataFrameの例
df = pd.DataFrame(dict(
name=['John', 'Nana', 'Ken'],
age=[10, np.nan, 3],
country=['us', np.nan, np.nan],))
print(df)
# name age country
# 0 John 10.0 us
# 1 Nana NaN NaN
# 2 Ken 3.0 NaN
print(df.isna())
# name age country
# 0 False False False
# 1 False True True
# 2 False False True
# 各列の欠損値カウント
print(df.isna().sum())
# name 0
# age 1
# country 2
# dtype: int64
# 各行の欠損値カウント
print(df.isna().sum(axis=1))
# 0 0
# 1 2
# 2 1
# dtype: int64
# DataFrame全体の欠損値カウント
print(df.isna().sum().sum())
# 3
欠損値を見つけて、ゼロで埋める
欠損値を補間したくなることがあると思います。
DataFrame を作成し、age が欠損値になっている行を見つけ、欠損値を 0 に置き換えます。
Python
# DataFrameの例
df = pd.DataFrame(dict(
name=['John', 'Nana', 'Ken'],
age=[np.nan, np.nan, 3],
country=['us', np.nan, np.nan],))
print(df)
# name age country
# 0 John NaN us
# 1 Nana NaN NaN
# 2 Ken 3.0 NaN
print(df['age'])
# 0 NaN
# 1 NaN
# 2 3.0
# Name: age, dtype: float64
print(df['age'].isna())
# 0 True
# 1 True
# 2 False
# Name: age, dtype: bool
# ageが欠損値の行のみ、表示する。
print(df[df['age'].isna()])
# name age country
# 0 John NaN us
# 1 Nana NaN NaN
# ageが欠損値のIndexを指定して、0に置き換える。
df.loc[df['age'].isna(), 'age'] = 0
print(df)
# name age country
# 0 John 0.0 us
# 1 Nana 0.0 NaN
# 2 Ken 3.0 NaN
# countryが欠損値になっている行を、unknownに置き換える。
df.loc[df['country'].isna(), 'country'] = 'unknown'
print(df)
# name age country
# 0 John 0.0 us
# 1 Nana 0.0 unknown
# 2 Ken 3.0 unknown
# 欠損値をカウントする。
print(df.isna().sum().sum())
# 0