欠損値の個数

データ分析では、主に「欠損値でない値」に対して、計算を行います。したがって、「欠損値が存在するのか」「何個存在するのか」は、分析前に確認すべきです。
「欠損値でない値」の個数は、count()で確認できます。

欠損値の個数を直接求めるメソッドはありませんが、欠損値の個数は、isna().sum()で計算できます。

isna()は、要素ごとにTrue/Falseを返すメソッドでした。
Pythonでは、True/Falseを足し算で使うと、それぞれ1/0と扱われます。
このことから、isna().sum()で欠損値の個数を数えられます。

演習

import pandas as pd

df = pd.DataFrame(
    [["Alice", float("nan")], ["Bob", 75]],
    columns=["Name", "Point"],
)
df
NamePoint
0AliceNaN
1Bob75.0

「欠損値でない値」の個数¶

列ごとの「欠損値でない値」の個数を表示します。

result1 = df.count()
result1
Name     2
Point    1
dtype: int64

列に対してもcount()を使えます。

df.Name.count()
2
df.Point.count()
1

DataFrameの「欠損値でない値」の総数は、count().sum()で計算できます。

df.count().sum()
3

欠損値の個数¶

列ごとの欠損値の個数を表示します。

result2 = df.isna().sum()
result2
Name     0
Point    1
dtype: int64

列に対してもisna().sum()を使えます。

df.Point.isna().sum()
1

補足

df.count()は、列ごとに「欠損値でない値」の個数を数えました。
下記のようにすると、行ごとに「欠損値でない値」の個数を数えます。

df.count(axis=1)

同様に、下記のようにすると、行ごとに欠損値の個数を数えます。
やってみましょう。

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

引数axisで、どの軸に沿って計算するかを指定します。0がインデックスで、1が列名一覧です。デフォルトは、0です。

0を指定すると、インデックスに沿った方向で計算するので、列ごとの結果になります。

引数axisはいろいろなメソッドで使えるので、覚えておきましょう。

コメント

タイトルとURLをコピーしました