Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python・Pandasでデータフレームの列に含まれるNaNの数をカウントする方法

Pandasのデータフレームで特定の列に含まれるNaN(欠損値)の数をカウントしたい場合、isna()メソッドとsum()メソッドを組み合わせるのが最もシンプルで一般的な方法です。isna()は各要素がNaNかどうかを判定し、sum()でその結果を合計することでNaNの出現回数を求められます。

必要なライブラリのインポート

まず、PandasとNumPyをそれぞれ別名(エイリアス)付きでインポートします。

import pandas as pd
import numpy as np

サンプルデータフレームの作成

次に、テスト用のデータフレームを作成します。ここでは「Units_Sold」列に意図的にNaN値を設定しています。

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
    "Units_Sold": [100, np.NaN, 150, np.NaN, 200, np.NaN]
})

このデータフレームでは、「Units_Sold」列の2行目・4行目・6行目(インデックス1・3・5)がNaNになっています。

特定の列のNaNをカウントする方法

「Units_Sold」列のNaN値をカウントするには、以下のように記述します。

dataFrame["Units_Sold"].isna().sum()

処理の流れは次のとおりです。

  • isna():列内の各要素に対して、NaNであればTrue、そうでなければFalseを返すブール系列を生成します。
  • sum():Trueは1、Falseは0として扱われるため、合計値=NaNの個数となります。

完全なコード例

以下は、データフレームの表示からNaNカウントまでの一連の処理をまとめたコードです。

import pandas as pd
import numpy as np

# データフレームを作成
dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
    "Units_Sold": [100, np.NaN, 150, np.NaN, 200, np.NaN]
})

print("Dataframe...\n", dataFrame)

# "Units_Sold"列のNaN値をカウント
count = dataFrame["Units_Sold"].isna().sum()

print("\nCount of NaN values in column Units_Sold...\n", count)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Dataframe...
         Car  Cubic_Capacity  Reg_Price   Units_Sold
0      BMW            2000       7000        100.0
1    Lexus            1800       1500          NaN
2    Tesla            1500       5000        150.0
3  Mustang            2500       8000          NaN
4 Mercedes            2200       9000        200.0
5   Jaguar            3000       6000          NaN

Count of NaN values in column Units_Sold...
3

出力結果から、「Units_Sold」列には3つのNaN値が含まれていることが確認できます。

補足:isna()とisnull()の違い

Pandasにはisna()と同じ動作をするisnull()というメソッドもあります。両者は完全に同等であり、どちらを使っても結果は変わりません。また、データフレーム全体のNaN数を確認したい場合は、dataFrame.isna().sum()のように列を指定せずに呼び出すことで、各列ごとのNaN数を一覧形式で取得できます。

  1. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存

  2. 【Python・Pandas】データフレームの特定の列の合計値を取得する方法

    データ分析をしていると、データフレーム(DataFrame)の中から特定の列だけの合計値を求めたい場面によく出会います。そんなときに便利なのが、Pandasのsum関数です。 合計を計算したい列をsum関数に渡すだけで、その列の合計値を簡単に取得できます。さらに、axis引数を指定すれば、列方向・行方向のどちらで集計するかも自由に制御可能です。 それでは、具体的なコード例を見ていきましょう。 サンプルコード import pandas as pd my_data = { Name: pd.Series([Tom, Jane, Vin, Eve, Will]), Age: p