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

Python・PandasでDataFrameの無限大の値に対してTrueを表示する方法

Pandasのisin()メソッドを使用すると、DataFrame内の無限大(inf)の値に該当するセルに対してTrueを表示できます。この記事では、NumPyのnp.infを使って無限大の値を含むDataFrameを作成し、それらを検出してTrueとして表示する手順を解説します。

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

まず、PandasとNumPyをそれぞれ別名(エイリアス)を付けてインポートします。

import pandas as pd
import numpy as np

無限大の値を含むデータの準備

次に、リストを値にもつ辞書を作成します。ここではNumPyのnp.infを使って、無限大の値を意図的に設定しています。

d = { "Reg_Price": [7000.5057, np.inf, 5000, np.inf, 9000.75768, 6000, 900, np.inf] }

DataFrameの作成

上記の辞書をもとに、PandasのDataFrameを作成します。

dataFrame = pd.DataFrame(d)

無限大の値に対してTrueを表示する

isin()メソッドにnp.inf-np.infを渡すことで、正負どちらの無限大にも該当するセルがTrueになります。

res = dataFrame.isin([np.inf, -np.inf])

サンプルコード全体

以下は、これまでの手順をまとめた完全なコード例です。あわせて、無限大の値の個数をカウントする処理も追加しています。

import pandas as pd
import numpy as np

# リストを値にもつ辞書
d = { "Reg_Price": [7000.5057, np.inf, 5000, np.inf, 9000.75768, 6000, 900, np.inf] }

# 辞書からDataFrameを作成
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)

# 無限大の値をチェックし、その個数を表示
count = np.isinf(dataFrame).values.sum()
print("\nInfinity values count...\n", count)

# 無限大の値に対してTRUEを表示
res = dataFrame.isin([np.inf, -np.inf])
print("\nUpdated DataFrame...\n", res)

実行結果

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

DataFrame...
     Reg_Price
0  7000.505700
1          inf
2  5000.000000
3          inf
4  9000.757680
5  6000.000000
6   900.000000
7          inf

Infinity values count...
 3

Updated DataFrame...
    Reg_Price
0      False
1       True
2      False
3       True
4      False
5      False
6      False
7       True

解説

元のDataFrameでは、インデックス1、3、7の行にinf(無限大)が含まれています。np.isinf(dataFrame).values.sum()により、無限大の値は合計3件であることが確認できました。

そしてisin([np.inf, -np.inf])を適用した結果のDataFrameでは、無限大の値が存在するセルだけがTrueとなり、それ以外はFalseになっています。このようにisin()メソッドを使えば、特定の値(この場合は無限大)がどこにあるかをBoolean型で簡単に可視化できます。

なお、データ分析の前処理段階では、検出した無限大の値をnp.nanに置き換えたり、行ごと削除したりするケースも多くあります。まず本記事のようにTrue/Falseで位置を把握することが、クリーンなデータ準備の第一歩となります。

  1. Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法

    はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\

  2. 【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)

    はじめに PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。 本記事では、fillna()メソッドのmethodパラメータにbfillを指定して、null以外の値を後方から伝播させる方法を解説します。 bfillの基本的な使い方 後方補完を行うには、fillna()メソッドの引数に以下のように指定します。 fillna(method=bfill) bfillは「backward f