Python のリストから NaN を削除する

Muhammad Waiz Khan 2023年1月30日
  1. math.isnan() メソッドを使用して、Python のリストから NaN を削除する
  2. numpy.isnan() メソッドを使用して、Python のリストから NaN を削除する
  3. Python の文字列リストから NaN を削除する
  4. pandas.isnull() メソッドを使用して、Python のリストから NaN を削除する
Python のリストから NaN を削除する

このチュートリアルでは、Python のリストから NaN 値を見つけて削除するためのさまざまな方法について説明します。プログラミングの NaN 値は Not a Number を意味します。これは、変数の値が数値ではないことを意味します。

NaN 値が配列またはリストで発生すると、計算で問題やエラーが発生する可能性があります。このチュートリアルでは、リストから文字列値 nan を削除する方法についても検討します。次の方法を使用して、リストから NaN または nan の値を削除できます。

math.isnan() メソッドを使用して、Python のリストから NaN を削除する

math.isnan(value) メソッドは、入力として数値 value を取り、valueNaN 値の場合は True を返し、それ以外の場合は False を返します。したがって、math.isnan() メソッドを使用して、数値のリストまたは配列に NaN 値があるかどうかを確認できます。

if float('NaN') == float('NaN') は Python で False を返すため、math.isnan() メソッドが必要です。Python では 2つの NaN 値が等しくないと言えます。以下のサンプルコードは、math.isnan() メソッドを使用してリストから NaN 値を削除する方法を示しています。

import math

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if math.isnan(x) == False]
print(newlist)

出力:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

numpy.isnan() メソッドを使用して、Python のリストから NaN を削除する

np.isnan(array) メソッドは、入力として array を受け取り、対応するインデックスが NaN 値の場合は True を返し、それ以外の場合は False を返します。

以下のサンプルコードは、numpy.isnan() メソッドを使用してリストから NaN 値を削除する方法を示しています。

import numpy as np

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if np.isnan(x) == False]
print(newlist)

出力:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

Python の文字列リストから NaN を削除する

ここで、数値リストが文字列型に変換され、NaN 値が含まれているかどうかを確認するとします。文字列型に変換すると、NaN 値は'nan'に等しい文字列になり、'nan'と比較することで簡単に検出および削除できます。

以下のサンプルコードは、文字列データ型のリストから NaN 値を削除する方法を示しています。

mylist = [1, 2, "nan", 8, 6, 4, "nan"]
mylist = [str(x) for x in mylist]
print(mylist)
newlist = [x for x in mylist if x != "nan"]
print(newlist)

出力:

['1', '2', 'nan', '8', '6', '4', 'nan']
['1', '2', '8', '6', '4']

pandas.isnull() メソッドを使用して、Python のリストから NaN を削除する

pandas.isnull(obj) は、入力としてスカラーまたは配列のような obj を取り、値が NaNNone、または NaT と等しい場合は True を返します。それ以外の場合は、False を返します。

サンプルコードは、pandas.isnull() メソッドを使用して、Python のリストから NaN 値を削除する方法を示しています。

import pandas as pd

mylist = [1, 2, float("nan"), 8, float("nan"), 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False]
print(newlist)

出力:

[1, 2, nan, 8, nan, 4, nan]
[1, 2, 8, 4]

ここで、リストのタイプがわからない場合、またはリストにさまざまなデータタイプのデータが含まれているかどうかがわからないとします。この場合、リストの各値を'nan'値と比較することにより、pandas.isnull() メソッドを使用して、NaN 値と'nan'値をチェックしてリストから削除できます。

前述のメソッドとは異なり、文字列データ型が入力として指定されている場合、pandas.isnull() メソッドはエラーを返さないため、pandas.isnull() メソッドを使用できます。したがって、pandas.isnull() メソッドを使用して、Python のリストまたは配列から NaN および'nan'の値を削除できます。

以下のサンプルコードは、pandas.isnull() メソッドと'nan'値を使用して、Python のリストから NaN'nan'の値を削除する方法を示しています。

import pandas as pd

mylist = ["John", 23, "nan", "New York", float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False and x != "nan"]
print(newlist)

出力:

['John', 23, 'nan', 'New York', nan]
['John', 23, 'New York']

関連記事 - Python List