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

【Python・Pandas】IndexオブジェクトのNaN値をfillna()で指定した値に置き換える方法

PandasのIndexオブジェクトのNaN値を指定した値で埋める方法

PandasのIndexオブジェクトに含まれるNaN(欠損値)を任意の値で置き換えるには、index.fillna()メソッドを使用します。SeriesやDataFrameと同様に、Indexオブジェクトでも欠損値の補完が可能です。

まず、必要なライブラリをインポートします。

import pandas as pd
import numpy as np

NaN値を含むインデックスの作成

続いて、NaN値をいくつか含むPandasインデックスを作成します。

index = pd.Index([50, 10, 70, np.nan, 90, 50, np.nan, np.nan, 30])

作成したインデックスを表示して確認しましょう。

print("Pandas Index...\n", index)

fillna()メソッドでNaNを特定の値に置き換える

fillna()メソッドの引数に置き換え後の値を渡すと、すべてのNaNがその値で埋められます。ここでは例として文字列「Amit」を指定しています。

print("\nIndex object after filling NaN value...\n", index.fillna('Amit'))

サンプルコード全体

以下に、ここまでの流れをまとめた完全なコード例を示します。

import pandas as pd
import numpy as np

# NaN値を含むPandasインデックスを作成
index = pd.Index([50, 10, 70, np.nan, 90, 50, np.nan, np.nan, 30])

# Pandasインデックスを表示
print("Pandas Index...\n", index)

# インデックス内の要素数を取得
print("\nNumber of elements in the index...\n", index.size)

# データのdtypeを確認
print("\nThe dtype object...\n", index.dtype)

# NaNを特定の値で埋める
print("\nIndex object after filling NaN value...\n", index.fillna('Amit'))

実行結果

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

Pandas Index...
Float64Index([50.0, 10.0, 70.0, nan, 90.0, 50.0, nan, nan, 30.0], dtype='float64')

Number of elements in the index...
9

The dtype object...
float64

Index object after filling NaN value...
Index([50.0, 10.0, 70.0, 'Amit', 90.0, 50.0, 'Amit', 'Amit', 30.0], dtype='object')

ポイント解説:dtypeの変化に注意

出力結果を見ると、元のインデックスのdtypeはfloat64ですが、fillna()で文字列を埋めた後はobject型に変わっています。これは数値と文字列が混在するため、Pandasが自動的に汎用のobject型へ変換するからです。数値でNaNを埋めたい場合は、index.fillna(0)のように数値を指定すればfloat64のまま保たれます。

なお、Indexオブジェクトはイミュータブル(変更不可)なため、fillna()は元のオブジェクトを書き換えるのではなく、NaNを埋めた新しいIndexを返します。元の変数を更新したい場合は、戻り値を再代入してください。

また、Pandasのバージョンによっては、出力のインデックス表記が「Float64Index」ではなく「Index」と表示されることがあります。近年のバージョンでは数値用の専用Indexクラスが統合されたためですが、動作自体は同じです。

  1. Python Pandas入門:NaN(欠損値)を線形補間で埋める方法

    PandasのSeriesに含まれるNaN(欠損値)を線形補間で埋めるには、interpolate()メソッドを使用します。このメソッドは、欠損値の前後にある値をもとに直線的に値を推定し、データを自然な形で補完してくれます。まず、必要なライブラリをインポートしましょう。import pandas as pd import numpy as npNaNを含むSeriesを作成する次に、NaN値をいくつか含むPandasのSeriesを作成します。NaNはNumPyのnp.nanを使って設定します。d = pd.Series([10, 20, np.nan, 40, 50, np.nan, 70,

  2. 【Python】Pandasのreplace()メソッドでDataFrameの値を別のDataFrameの値に置き換える方法

    Pandasでは、replace()メソッドを使うことで、あるDataFrameの値を別のDataFrameから取得した値に簡単に置き換えることができます。この記事では、2つのDataFrameを作成し、片方の値をもう片方の値で置き換える手順を、サンプルコードと実行結果とともにわかりやすく解説します。 基本的な流れ まず、元となる1つ目のDataFrameを作成します。 dataFrame1 = pd.DataFrame({Car: [Audi, Lamborghini], Place: [US, UK], Units: [200, 500]}) 次に、置き換え先となる2つ目のDataFram