Pythonのnumpy.nan_to_num()でNaNを0に、無限大を大きな有限数に置き換える方法
PythonでNaN(非数)をゼロに、無限大を大きな有限数に置き換えたい場合は、NumPyのnumpy.nan_to_num()メソッドを使用します。このメソッドは、非有限値(NaNや無限大)が置き換えられた配列xを返します。引数copyにFalseを指定した場合、返されるのはxそのものになることもあります。
nan_to_num()メソッドの主なパラメータ
第1引数:x — 入力データを指定します。
第2引数:copy — xのコピーを作成するか(True)、元の配列を直接書き換えるか(False)を指定します。インプレース操作は、配列へのキャストにコピーが必要ない場合にのみ実行されます。デフォルトはTrueです。
第3引数:nan — NaN値を埋めるために使用する値です。値を指定しない場合、NaNは0.0に置き換えられます。
第4引数:posinf — 正の無限大を埋めるために使用する値です。値を指定しない場合は、非常に大きな有限数に置き換えられます。
第5引数:neginf — 負の無限大を埋めるために使用する値です。値を指定しない場合は、非常に小さい(負の)有限数に置き換えられます。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np
array()メソッドを使ってNumPy配列を作成します。ここでは、正の無限大・負の無限大・NaN・通常の数値を含む配列を用意します。
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
作成した配列を表示します。
print("Our Array...\n",arr)
配列の次元数を確認します。
print("\nDimensions of our Array...\n",arr.ndim)
配列のデータ型を取得します。
print("\nDatatype of our Array object...\n",arr.dtype)
配列の形状を確認します。
print("\nShape of our Array object...\n",arr.shape)
numpy.nan_to_num()メソッドを使い、NaNを0に、無限大を大きな有限数に置き換えます。ここでは、NaNを置き換える値として11111を指定しています。
print("\nResult...\n",np.nan_to_num(arr, nan = 11111))
完全なコード例
import numpy as np
# array()メソッドを使ってNumPy配列を作成
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
# 配列を表示
print("Our Array...\n",arr)
# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)
# 形状を確認
print("\nShape of our Array object...\n",arr.shape)
# numpy.nan_to_num()メソッドでNaNと無限大を有限数に置き換え
# copy=Falseの場合、xそのものが返されることがあります
print("\nResult...\n",np.nan_to_num(arr, nan = 11111))
実行結果
Our Array... [ inf -inf nan -128. 128.] Dimensions of our Array... 1 Datatype of our Array object... float64 Shape of our Array object... (5,) Result... [ 1.79769313e+308 -1.79769313e+308 1.11110000e+004 -1.28000000e+002 1.28000000e+002]
実行結果からわかるように、正の無限大(inf)はfloat64で表現できる最大値である約1.797×10308に、負の無限大(-inf)は約-1.797×10308に置き換えられています。また、NaNは指定した値11111に変換され、それ以外の数値はそのまま保持されています。このようにnan_to_num()を使えば、機械学習や数値計算において問題となる非有限値を簡単に安全な値へ変換できます。
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa
-
Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\