插值和菲尔纳:
由于是时间序列问题,我将在答案中使用 o/p 图形图像进行解释:
假设我们有如下时间序列数据:(x 轴 = 天数,y = 数量)
pdDataFrame.set_index('Dates')['QUANTITY'].plot(figsize = (16,6))
我们可以看到时间序列中有一些 NaN 数据。 nan 的 % = 总数据的 19.400%。现在我们要估算 null/nan 值。
我将尝试向您展示用于在数据中填充 Nan 值的 interpolate 和 filna 方法的 o/p。
interpolate() :
首先我们将使用插值:
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() 与回填方法 & 限制 = 7
limit:这是向前/向后填充的连续 NaN 值的最大数量。换句话说,如果有超过这个数量的连续 NaN 的间隙,它只会被部分填充。
pdDataFrame.set_index('Dates')['QUANTITY'].fillna(value=None, method='backfill', axis=None, limit=7, downcast=None).plot(figsize = (16,6))
我发现 fillna 函数更有用。但是您可以使用任何一种方法来填充两列中的 nan 值。
有关这些功能的更多详细信息,请参阅以下链接:
- 菲尔娜:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.fillna.html#pandas.Series.fillna
- https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.interpolate.html
还有一个 Lib:impyute,您可以查看。有关此库的更多详细信息,请参阅此链接:https://pypi.org/project/impyute/