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

Python Pandas – NaNをマスクして特定の値に置き換える方法

Python Pandas – NaNをマスクして特定の値に置き換える

PandasのIndexオブジェクトに含まれるNaN(欠損値)をマスクし、特定の値に一括で置き換えるには、index.putmask()メソッドを使用します。このメソッドの第1引数には、NaNを検出するためのindex.isna()メソッドを指定します。

putmask()メソッドは、条件がTrueとなる位置の値を指定した値で置き換える機能を持っています。一方、isna()は各要素がNaNかどうかを判定し、NaNであればTrueを返します。この2つを組み合わせることで、「NaNだけを別の値に置き換える」という処理をシンプルに実現できます。

必要なライブラリのインポート

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

import pandas as pd
import numpy as np

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

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

index = pd.Index([5, 65, 10, np.nan, 75, np.nan])

インデックスの表示

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

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

NaNをマスクして特定の値に置き換える

index.isna()でNaNの位置を検出し、putmask()を使ってその位置の値を111に置き換えます。

print("\nMask...\n", index.putmask(index.isna(), 111))

完全なコード例

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

import pandas as pd
import numpy as np

# NaNを含むPandasインデックスを作成
index = pd.Index([5, 65, 10, np.nan, 75, np.nan])

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

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

# NaNをマスクして特定の値に置き換え
print("\nMask...\n", index.putmask(index.isna(), 111))

実行結果

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

Pandas Index...
Float64Index([5.0, 65.0, 10.0, nan, 75.0, nan], dtype='float64')

Number of elements in the index...
6

Mask...
Float64Index([5.0, 65.0, 10.0, 111.0, 75.0, 111.0], dtype='float64')

出力のポイント

元のインデックスにはNaNが2つ含まれていましたが、putmask()を適用した結果、それらがすべて111.0に置き換えられていることが確認できます。また、NaNが含まれているため、インデックスのデータ型は自動的にfloat64になっている点にも注目してください。そのため、置き換え後の値も整数の111ではなく、111.0という浮動小数点数として表示されます。

  1. Pythonでリストのインデックスと値を取得する3つの方法(index・range・enumerate)

    Pythonでリストを扱っていると、特定の位置にある要素へアクセスしたり、逆に要素からインデックスを取得したりする場面が頻繁に発生します。この記事では、リスト内の要素のインデックスや値を取得するための代表的な3つの方法を、サンプルコード付きでわかりやすく解説します。 方法1:list.index() を使う index() メソッドは、指定した要素がリストのどの位置に存在するかを調べたいときに便利です。引数に要素の値を渡すと、その要素のインデックス位置(先頭は0)が返されます。 サンプルコード listA = [11, 45, 27, 8, 43] # 45 のインデックスを表示 prin

  2. Pythonでリストのインデックスを値とする辞書を作成する方法

    この記事では、Pythonで頻繁に使われるコレクションの一つである「リスト」から辞書を作成する方法を解説します。リスト自体にはインデックスやキーが含まれていませんが、辞書ではすべての要素(値)に対してキーやインデックスを関連付ける必要があります。ここでは、リストの各要素を「値」として持ち、その位置(インデックス)を対応する値として格納する辞書の作り方を、2つの異なるアプローチで紹介します。enumerate関数を使う方法enumerate関数は、イテラブルなオブジェクトの各要素にカウンター(連番)を割り当ててくれる便利な組み込み関数です。この関数を対象のリストに適用し、forループと組み合わせ