首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Pandas resample填补时间序列数据中的空白

在现实世界中时间序列数据并不总是完全干净的。有些时间点可能会因缺失值产生数据的空白间隙。机器学习模型是不可能处理这些缺失数据的,所以在我们要在数据分析和清理过程中进行缺失值的填充。本文介绍了如何使用pandas的重采样函数来识别和填补这些空白。

原始数据

出于演示的目的,我模拟了一些每天的时间序列数据(总共10天的范围),并且设置了一些空白间隙。初始数据如下:

重采样函数

在pandas中一个强大的时间序列函数是resample函数。这允许我们指定重新采样时间序列的规则。

如果我们在同一粒上调用重采样的话对于识别和填补时间序列数据的空白是非常有用的。例如,我们正在使用的原始数据集并不是每天都有数值。利用下面的重样函数将这些间隙识别为NA值。

df.resample('1D').mean()

可视化的图像如下

正如你在上面看到的,resample方法为不存在的天数插入NA值。这将扩展df并保证我们的时间序列是完整的。下一步我们就要使用各种方法用实际数字填充这些NA值。

向前填补重采样

一种填充缺失值的方法是向前填充(Forward Fill)。这种方法使用前面的值来填充缺失的值。例如,我们的数据中缺少第2到第4个变量,将用第1个变量(1.0)的值来填充。

df.resample('1D').mean().ffill()

ffill就是 Forward Fill的简写,下面可视化看看效果

向后填补重采样

类似的方法是反向填充。在上述操作之后,你可能会猜到它的作用——使用后面的值来填充缺失的数据点。从我们的时间序列的第一天到第2到第4天,你会看到它现在的值是2.0(从10月5日开始)。

可视化如下

插值重采样

本文最后一种方法是插值法。下面的图表显示了插值,数据是从一个点到下一个点的拟合。

df.resample('1D').mean().interpolate()

在下面的可视化看到缺失值连接的线条比较平滑。

总结

有许多方法可以识别和填补时间序列数据中的空白。使用重采样函数是一种用来识别和填充缺失的数据点简单且有效的方法。这可以用于在构建机器学习模型之前准备和清理数据。

作者:Barrett Studdard

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211026A024WM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券