【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)
はじめに
PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。
本記事では、fillna()メソッドのmethodパラメータに'bfill'を指定して、null以外の値を後方から伝播させる方法を解説します。
bfillの基本的な使い方
後方補完を行うには、fillna()メソッドの引数に以下のように指定します。
fillna(method='bfill')
'bfill'は「backward fill」の略で、各欠損値を直後の行の非null値で置き換えます。
補足: Pandas 2.1以降ではmethod引数は非推奨となっており、代わりに専用メソッドのdf.bfill()を使うことが推奨されています。動作は同じです。
サンプルデータの準備
ここでは、Microsoft Excelで開いた次のようなCSVファイル(一部にNaNを含む売上データ)を使用します。

まず、必要なライブラリをインポートします。
import pandas as pd
続いて、CSVファイルからデータを読み込み、DataFrameを作成します。
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
実行例:後方補完のコード全体
以下が実際のコードです。読み込んだDataFrameに対してfillna(method='bfill')を実行し、欠損値を後方の値で埋めています。
import pandas as pd
# CSVファイルからデータを読み込み、DataFrameを作成
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("DataFrame...\n", dataFrame)
# null以外の値を後方へ伝播させて欠損値を埋める
res = dataFrame.fillna(method='bfill')
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 120.0
2 Audi 2500 120.0
3 Jaguar 2000 110.0
4 Mustang 2500 110.0
結果のポイント
- 元のDataFrameでは、インデックス1(Lexus)と3(Jaguar)の「Units」列がNaNでした。
fillna(method='bfill')を適用すると、LexusのNaNは直後のAudiの値(120.0)で、JaguarのNaNは直後のMustangの値(110.0)でそれぞれ埋められます。- これにより、すべての行に有効な数値が揃い、集計や分析をスムーズに行えるようになります。
まとめ
欠損値を後方の値で埋めたい場合は、fillna(method='bfill')を使います。時系列データなどで「直近の既知の値」を引き継ぎたいケースに特に便利です。なお、新しいバージョンのPandasではdf.bfill()メソッドの利用が推奨されている点にも注意しましょう。
-
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入門:interpolate()メソッドでNaN値を補間して埋める方法
はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\