Python Pandas入門:NaN(欠損値)を線形補間で埋める方法
PandasのSeriesに含まれるNaN(欠損値)を線形補間で埋めるには、interpolate()メソッドを使用します。このメソッドは、欠損値の前後にある値をもとに直線的に値を推定し、データを自然な形で補完してくれます。
まず、必要なライブラリをインポートしましょう。
import pandas as pd import numpy as np
NaNを含むSeriesを作成する
次に、NaN値をいくつか含むPandasのSeriesを作成します。NaNはNumPyのnp.nanを使って設定します。
d = pd.Series([10, 20, np.nan, 40, 50, np.nan, 70, np.nan, 90, 100])
線形補間を実行する
Seriesに対してinterpolate()メソッドを呼び出すだけで、線形補間が実行されます。
d.interpolate()
完全なサンプルコード
以下が一連の流れをまとめたサンプルコードです。
import pandas as pd
import numpy as np
# pandas Seriesの作成
d = pd.Series([10, 20, np.nan, 40, 50, np.nan, 70, np.nan, 90, 100])
print("Series...\n", d)
# 線形補間を実行
print("\nLinear Interpolation...\n", d.interpolate())実行結果
上記のコードを実行すると、次のような出力が得られます。
Series... 0 10.0 1 20.0 2 NaN 3 40.0 4 50.0 5 NaN 6 70.0 7 NaN 8 90.0 9 100.0 dtype: float64 Linear Interpolation... 0 10.0 1 20.0 2 30.0 3 40.0 4 50.0 5 60.0 6 70.0 7 80.0 8 90.0 9 100.0 dtype: float64
補間結果の解説
出力結果を見ると、元のSeriesではインデックス2、5、7がNaNでしたが、補間後はそれぞれ「30」「60」「80」という値が埋め込まれていることがわかります。
例えば、インデックス2のNaNは、直前の値「20」(インデックス1)と直後の値「40」(インデックス3)の中間点として計算され、「30」が補完されています。同様に、インデックス5は「50」と「70」から「60」、インデックス7は「70」と「90」から「80」が求められています。
このように、interpolate()メソッドを使えば、時系列データやセンサーデータなどで発生した欠損値を、飛び飛びにならないよう滑らかに埋めることができます。なお、DataFrameに対しても同様にdf.interpolate()と呼び出すことで、同じように欠損値の補間が可能です。
-
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のquery()メソッドでデータを効率的にフィルタリングする方法
Pandasは、データクレンジングやデータ分析などに幅広く利用されているPythonのライブラリです。本記事では、query()メソッドを使用して、指定したデータセットから条件に合致するデータを抽出する方法を解説します。query()メソッドでは、単一の条件だけでなく、複数の条件を組み合わせた絞り込みも可能です。データの読み込みまず、Pandasライブラリを使ってCSVファイルのデータをDataFrameとして読み込みます。以下のプログラムがその基本的なコードです。サンプルコードimport pandas as pd # CSVファイルからDataFrameを読み込む data = pd.r