时间序列数据的预处理
来源:Deephub Imba 本文约2600字,建议阅读5分钟
在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题。
时间序列数据的定义及其重要性。 时间序列数据的预处理步骤。 构建时间序列数据,查找缺失值,对特征进行去噪,并查找数据集中存在的异常值。
时间序列是在特定时间间隔内记录的一系列均匀分布的观测值。
时间序列数据预处理
import pandas as pd
passenger = pd.read_csv('AirPassengers.csv')
passenger['Date'] = pd.to_datetime(passenger['Date'])
passenger.sort_values(by=['Date'], inplace=True, ascending=True)
时间序列中的缺失值
基于时间的插值 样条插值 线性插值
from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
figure(figsize=(12, 5), dpi=80, linewidth=10)
plt.plot(passenger['Date'], passenger['Passengers'])
plt.title('Air Passengers Raw Data with Missing Values')
plt.xlabel('Years', fontsize=14)
plt.ylabel('Number of Passengers', fontsize=14)
plt.show()
passenger[‘Linear’] = passenger[‘Passengers’].interpolate(method=’linear’)
passenger[‘Spline order 3’] = passenger[‘Passengers’].interpolate(method=’spline’, order=3)
passenger[‘Time’] = passenger[‘Passengers’].interpolate(method=’time’)
methods = ['Linear', 'Spline order 3', 'Time']
from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
for method in methods:
figure(figsize=(12, 4), dpi=80, linewidth=10)
plt.plot(passenger["Date"], passenger[method])
plt.title('Air Passengers Imputation using: ' + types)
plt.xlabel("Years", fontsize=14)
plt.ylabel("Number of Passengers", fontsize=14)
plt.show()
时间序列去噪
rolling_google = google_stock_price['Open'].rolling(20).mean()
plt.plot(google_stock_price['Date'], google_stock_price['Open'])
plt.plot(google_stock_price['Date'], rolling_google)
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.legend(['Open','Rolling Mean'])
plt.show()
denoised_google_stock_price = fft_denoiser(value, 0.001, True)
plt.plot(time, google_stock['Open'][0:300])
plt.plot(time, denoised_google_stock_price)
plt.xlabel('Date', fontsize = 13)
plt.ylabel('Stock Price', fontsize = 13)
plt.legend([‘Open’,’Denoised: 0.001'])
plt.show()
时间序列中的离群值检测
可能的面试问题
预处理时间序列数据的方法有哪些,与标准插补方法有何不同? 时间序列窗口是什么意思? 你听说过孤立森林吗?如果是,那么你能解释一下它是如何工作的吗? 什么是傅立叶变换,我们为什么需要它? 填充时间序列数据中缺失值的不同方法是什么?
总结
评论