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

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()と呼び出すことで、同じように欠損値の補間が可能です。

  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のquery()メソッドでデータを効率的にフィルタリングする方法

    Pandasは、データクレンジングやデータ分析などに幅広く利用されているPythonのライブラリです。本記事では、query()メソッドを使用して、指定したデータセットから条件に合致するデータを抽出する方法を解説します。query()メソッドでは、単一の条件だけでなく、複数の条件を組み合わせた絞り込みも可能です。データの読み込みまず、Pandasライブラリを使ってCSVファイルのデータをDataFrameとして読み込みます。以下のプログラムがその基本的なコードです。サンプルコードimport pandas as pd # CSVファイルからDataFrameを読み込む data = pd.r