Python

【Python】pandas でnanデータを判定する方法

投稿日:2021年9月4日 更新日:

概要

pandasで読み込んだデータで、NaNを判定したい場合に、条件式をどう書いたらいいか迷うときがあるのでまとめました。

データ

以下を使います。(ヘッダなし)

nantest.csv

30,test1
,test2
50,

以下で読み込みます。後でnumpyも検証するのでimportしておきます。

import pandas as pd
import numpy as np

df = pd.read_csv('nantest.csv',header = None)

df.head()

 

NaNの判定パターン

DataFrameで判定する場合

pandasのisna()メソッドで判定できます。

df.isna()

また、isnull()メソッドでも判定できます。

df.isnull()

Seriesで判定する場合

isna()メソッドで判定できます。

df[0].isna()
df[1].isna()

また、isnull()メソッドでも判定できます。

df[0].isnull()
df[1].isnull()

要素で判定する場合

要素で判定する場合はpandasのメソッドは使えませんので、それぞれのデータ型に合わせて判定する必要があります。

NGな例(要素にpandasメソッドのisna()を使用した場合)

df[0][1].isna()

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-52-0056ce2b22fa> in <module>
----> 1 df[0][1].isna()

AttributeError: 'numpy.float64' object has no attribute 'isna'

このようにエラーがでます。

OKな例

np.isnan(df[0][1])
 > True
np.isnan(df[1][2])
 >True

引っかかりやすい例

numpy.float64のデータ型の場合は”is np.nan”では判定できない

pandasでcsvを読み取った際に要素のデータ型が自動的に決まりますが、numpy.float64として取り込まれたデータには”is np.nan”では上手く判定できません。

type(df[0][1])
> numpy.float64

一方でfloat型で認識された場合は”is np.nan”で判定できます。

type(df[1][2])
> float

まとめ

DataFrame、Seriesの単位でnanを判定する場合はpandasメソッドの”.isnan()”か”.isnull()”を使用するのが良いです。ただし、for文などで行単位でイテレーションし、要素に対してnanを判定する場合はデータ型を意識して判定式を記述するように注意が必要です。

 

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Python】WindowsでPython+JupyterLab環境の構築

Contents1 概要2 環境3 Step1 : Pythonのインストール4 Step2 : 仮想環境(venv)の構築5 Step3 : JupyterLabの構築 概要 PythonとJupy …

【Python】決定係数と相関係数の計算

Contents1 目的2 決定係数とは?3 Pythonによる決定係数の計算4 相関係数 目的 前回、あるデータXからデータYの関係を単回帰による線形方程式で表すことを行いました。ただし、これはあく …

【Python】算術平均と幾何平均計算

Contents1 目的2 平均3 算術平均4 幾何平均5 まとめ 目的 統計学を使いこなしたい。でも参考書を読んでいても難しい概念や数式が沢山出てきて、その時は分かったつもりになっても後で実践的に使 …

【Python】cx_Oracleでデータを一括挿入する方法

Contents1 概要2 環境3 Step1 : Oracle側テーブル作成4 Step2 : Pythonによる一括挿入コード5 まとめ 概要 pythonからOracleデータベースを操作するラ …

【Python】活性化関数を描画する

Contents1 概要2 使用するライブラリ3 ステップ関数4 シグモイド関数5 tahn関数6 ReLu関数7 Leaky ReLu関数8 まとめ9 コード全体 概要 Deep Learningの …

言語切り替え

カテゴリー