データ分析では、主に「欠損値でない値」に対して、計算を行います。したがって、「欠損値が存在するのか」「何個存在するのか」は、分析前に確認すべきです。
「欠損値でない値」の個数は、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
Name | Point | |
---|---|---|
0 | Alice | NaN |
1 | Bob | 75.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
はいろいろなメソッドで使えるので、覚えておきましょう。
コメント