次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd
import numpy as np
dates = pd.date_range(
'2023-01-01',
periods=5,
freq='D')
data = [1.0, np.nan, np.nan, 4.0, 5.0]
df = pd.DataFrame(
data,
index=dates,
columns=['A'])
print(df.interpolate())
回答の選択肢:
(A) NaN 値が0で補完されたデータフレーム
(B) NaN 値が最頻値で補完されたデータフレーム
(C) NaN 値が線形補間によって補完されたデータフレーム
(D) NaN 値が最近傍の値で補完されたデータフレーム
出力例:
A
2023-01-01 1.0
2023-01-02 2.0
2023-01-03 3.0
2023-01-04 4.0
2023-01-05 5.0
正解: (C)
回答の選択肢:
(A) NaN 値が0で補完されたデータフレーム
(B) NaN 値が最頻値で補完されたデータフレーム
(C) NaN 値が線形補間によって補完されたデータフレーム
(D) NaN 値が最近傍の値で補完されたデータフレーム
このコードは、日付の範囲をインデックスとして持つデータフレームを作成し、そのデータフレーム中の欠損値(`np.nan`)を補間しています。
import pandas as pd
import numpy as np
dates = pd.date_range(
'2023-01-01',
periods=5,
freq='D')
data = [1.0, np.nan, np.nan, 4.0, 5.0]
df = pd.DataFrame(
data,
index=dates,
columns=['A'])
print(df.interpolate())
詳しく説明します。
‘2023-01-01’から始まる日単位の日付範囲を5期間作ります。
dates = pd.date_range(
'2023-01-01',
periods=5,
freq='D')
dates
に格納されているデータは次のようになっています。
DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04',
'2023-01-05'],
dtype='datetime64[ns]', freq='D')
この日付範囲をインデックスとして、1.0, NaN, NaN, 4.0, 5.0という値のデータフレームを作成します。
data = [1.0, np.nan, np.nan, 4.0, 5.0]
df = pd.DataFrame(
data,
index=dates,
columns=['A'])
df
に格納されているデータは次のようになっています。
A
2023-01-01 1.0
2023-01-02 NaN
2023-01-03 NaN
2023-01-04 4.0
2023-01-05 5.0
データフレームの`interpolate()`メソッドを使って欠損値を補間し、出力します。
print(df.interpolate())
`interpolate()`メソッドはデフォルトで線形補間を行います。つまり、両隣の数値(ここでは1.0と4.0)の間の等間隔な数値を生成し、それを欠損値の代わりに用います。
ここでは、1と4の間で等間隔に2と3を生成し、それを二つのNaNの代わりに用います。これにより、欠損データが連続的な数値データであると仮定して補完を行うことができます。
このメソッドは、特に時系列データ等での欠損値補完に有力な手段となります。
A
2023-01-01 1.0
2023-01-02 2.0
2023-01-03 3.0
2023-01-04 4.0
2023-01-05 5.0