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