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で位置を把握することが、クリーンなデータ準備の第一歩となります。
-
Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\
-
【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)
はじめに PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。 本記事では、fillna()メソッドのmethodパラメータにbfillを指定して、null以外の値を後方から伝播させる方法を解説します。 bfillの基本的な使い方 後方補完を行うには、fillna()メソッドの引数に以下のように指定します。 fillna(method=bfill) bfillは「backward f