1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

時刻歴データの欠損値の補完方法いろいろ

Posted at

概要

測定(時刻歴)データの中には,期せずして,欠損値(NaN:Not a Number)が含まれている場合がある.
Pythonで,様々なデータ補完を試みることができる.
Cursorエディタを使えば,一瞬で様々な補完方法を試すことができる.

欠損データ生成(サンプル)

interp_missing.py
# -*- coding: utf-8 -*-
# 欠損値を含むデータ生成ファイル
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# サンプルデータの作成
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8]})
plt.figure("サンプルデータ")
plt.plot(df)
plt.show()

スクリーンショット 2024-11-07 0.09.46.jpg

0で補完

df_filled = df.fillna(0)

特定の列のみ補完

df['A'] = df['A'].fillna(0)
plt.figure("特定列のみ補完")
plt.plot(df)
plt.show()

前方補完

df_filled = df.ffill()
plt.figure("前方補完")
plt.plot(df_filled)
plt.show()

後方補完

df_filled = df.bfill()
plt.figure("後方補完")
plt.plot(df_filled)
plt.show()

線形補完

df_filled = df.interpolate()
plt.figure("線形補完")
plt.plot(df_filled)
plt.show()

スクリーンショット 2024-11-07 0.15.45.jpg

平均値補完

df_filled = df.fillna(df.mean())
plt.figure("平均値補完")
plt.plot(df_filled)
plt.show()

スクリーンショット 2024-11-07 0.16.56.jpg

中央値補完

df_filled = df.fillna(df.median())
plt.figure("中央値補完")
plt.plot(df_filled)
plt.show()

線形補完

df_filled = df.interpolate(method='linear')
plt.figure("線形補完")
plt.plot(df_filled)
plt.show()

最近房点補完

df_filled = df.interpolate(method='nearest')
plt.figure("最近房点補完")
plt.plot(df_filled)
plt.show()

スクリーンショット 2024-11-07 0.23.15.jpg

IterativeImputer

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

df_filled = IterativeImputer().fit_transform(df)
plt.figure("IterativeImputer")
plt.plot(df_filled)
plt.show()

スクリーンショット 2024-11-07 0.25.00.jpg

移動平均による補完

データ点数が少ないと,意図しない結果となることに注意.

df_filled = df.rolling(window=3).mean().fillna(0)
plt.figure("移動平均による補完")
plt.plot(df_filled)
plt.show()

スプライン補完

df_filled = df.interpolate(method='spline', order=2)
plt.figure("スプライン補完")
plt.plot(df_filled)
plt.show()

スクリーンショット 2024-11-07 0.28.39.jpg

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?