Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめに
Pandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。
ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。

1. CSVファイルからデータを読み込む
まず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")2. interpolate()でNaN値を補間する
次に、interpolate()メソッドを呼び出すだけで、NaN値が自動的に補間されます。デフォルトでは線形補間(linear method)が適用されます。
dataFrame.interpolate()
完全なコード例
以下に、実際に動作するコード全体を示します。
import pandas as pd
# CSVファイルからデータを読み込んでDataFrameを作成
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("DataFrame...\n", dataFrame)
# interpolate()でNaN値を補間
res = dataFrame.interpolate()
print("\n補間後のDataFrame...\n", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
Car Reg_Price Units
0 BMW 2500 100.0
1 Lexus 3500 NaN
2 Audi 2500 120.0
3 Jaguar 2000 NaN
4 Mustang 2500 110.0
補間後のDataFrame...
Car Reg_Price Units
0 BMW 2500 100.0
1 Lexus 3500 110.0
2 Audi 2500 120.0
3 Jaguar 2000 115.0
4 Mustang 2500 110.0結果の解説
出力結果を見ると、補間前は「Lexus」の行と「Jaguar」の行のUnits列がNaNでしたが、補間後にはそれぞれ110.0と115.0が設定されています。
- Lexusの110.0は、前の値(BMW: 100.0)と次の値(Audi: 120.0)の中間値として計算されています。
- Jaguarの115.0は、前の値(Audi: 120.0)と次の値(Mustang: 110.0)の中間値として計算されています。
このように、interpolate()メソッドを使えば、時系列データや数値データの欠損値を前後の値から滑らかに推定でき、dropna()で行を削除する場合と異なり、データを失うことなく欠損処理が可能です。
-
Python Pandasのnotnull()メソッドでNULL値(NaN)を確認する方法
Pandasのnotnull()メソッドは、ブール値(True / False)を返すメソッドです。DataFrameにNULL値(NaN)が含まれている場合はFalseを返し、NULL値でない場合はTrueを返します。ここでは、NaN(NULL値)をいくつか含む次のCSVファイルを例にして説明します。CSVファイルの読み込みまず、read_csv()を使ってCSVファイルを読み込みます。dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\CarRecords.csv")NULL値以外(有効なデータ)の確認notnull(
-
【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)
はじめに PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。 本記事では、fillna()メソッドのmethodパラメータにbfillを指定して、null以外の値を後方から伝播させる方法を解説します。 bfillの基本的な使い方 後方補完を行うには、fillna()メソッドの引数に以下のように指定します。 fillna(method=bfill) bfillは「backward f