我有一个时间序列数据框,该数据框很大并且在 2 列(“湿度”和“压力”)中包含一些缺失值。我想以一种巧妙的方式来估算这些缺失值,例如使用最近邻居的值或前后时间戳的平均值。有没有简单的方法可以做到这一点?我试过 fancyimpute 但数据集包含大约 180000 个示例并给出内存错误
原文由 Marco 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个时间序列数据框,该数据框很大并且在 2 列(“湿度”和“压力”)中包含一些缺失值。我想以一种巧妙的方式来估算这些缺失值,例如使用最近邻居的值或前后时间戳的平均值。有没有简单的方法可以做到这一点?我试过 fancyimpute 但数据集包含大约 180000 个示例并给出内存错误
原文由 Marco 发布,翻译遵循 CC BY-SA 4.0 许可协议
插值和滤波器:
由于是时间序列问题,出于解释目的,我将在答案中使用 o/p 图形图像:
考虑我们有如下时间序列数据:(在 x 轴上 = 天数,y = 数量)
pdDataFrame.set_index('Dates')['QUANTITY'].plot(figsize = (16,6))
我们可以看到时间序列中有一些 NaN 数据。 nan 的百分比 = 总数据的 19.400%。现在我们要估算 null/nan 值。
我将尝试向您展示用于填充数据中的 Nan 值的 interpolate 和 filna 方法的 o/p。
插值():
首先我们将使用插值:
pdDataFrame.set_index('Dates')['QUANTITY'].interpolate(method='linear').plot(figsize = (16,6))
注意:这里插值没有时间方法
fillna() 与回填方法
pdDataFrame.set_index('Dates')['QUANTITY'].fillna(value=None, method='backfill', axis=None, limit=None, downcast=None).plot(figsize = (16,6))
fillna() 与回填方法 & limit = 7
限制:这是向前/向后填充的连续 NaN 值的最大数量。换句话说,如果有超过这个连续 NaN 数的间隙,它只会被部分填充。
pdDataFrame.set_index('Dates')['QUANTITY'].fillna(value=None, method='backfill', axis=None, limit=7, downcast=None).plot(figsize = (16,6))
我发现 fillna 函数更有用。但是您可以使用任何一种方法来填充两列中的 nan 值。
有关这些功能的更多详细信息,请参阅以下链接:
还有一个 Lib: impyute
您可以查看。有关此库的更多详细信息,请参阅此链接: https ://pypi.org/project/impyute/
原文由 Yogesh Awdhut Gadade 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
考虑
interpolate
( 系列- DataFrame )。此示例显示如何用直线填充任意大小的间隙: