用法:
DataFrame.interpolate(method='linear', axis=0, limit=None, inplace=False, limit_direction=None, limit_area=None, downcast=None, **kwargs)
使用插值方法填充 NaN 值。
请注意,具有 MultiIndex 的 DataFrame/Series 仅支持
method='linear'
。- method:str,默认 ‘linear’
要使用的插值技术。之一:
‘linear’:忽略索引并将值视为等距。这是 MultiIndexes 上唯一支持的方法。
‘time’:处理每日和更高分辨率的数据以插入给定的间隔长度。
‘index’, ‘values’:使用索引的实际数值。
‘pad’:使用现有值填充 NaN。
‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘spline’, ‘barycentric’, ‘polynomial’:传递给
scipy.interpolate.interp1d
。这些方法使用索引的数值。 ‘polynomial’ and ‘spline’ 都要求您还指定order
(int),例如df.interpolate(method='polynomial', order=5)
。‘krogh’, ‘piecewise_polynomial’、‘spline’, ‘pchip’, ‘akima’, ‘cubicspline’:类似名称的 SciPy 插值方法的包装器。请参阅
Notes
。‘from_derivatives’:指的是
scipy.interpolate.BPoly.from_derivatives
,它替换了scipy 0.18中的‘piecewise_polynomial’插值方法。
- axis:{{0 or ‘index’, 1 or ‘columns’, None}},默认无
沿插值的轴。
- limit:整数,可选
要填充的最大连续 NaN 数。必须大于 0。
- inplace:布尔值,默认为 False
如果可能,更新数据。
- limit_direction:{{‘forward’, ‘backward’, ‘both’}},可选
连续的 NaN 将朝这个方向填充。
- 如果指定了限制:
如果‘method’ 是‘pad’ or ‘ffill’,则‘limit_direction’ 必须是‘forward’。
如果‘method’ 是‘backfill’ or ‘bfill’,则‘limit_direction’ 必须是‘backwards’。
- 如果未指定‘limit’:
如果‘method’为‘backfill’ or ‘bfill’,则默认为‘backward’
否则默认为‘forward’
- limit_area:
{{
None
, ‘inside’, ‘outside’}},默认无 如果指定了限制,则连续的 NaN 将被此限制填充。
None
:没有填充限制。‘inside’:仅填充由有效值包围的 NaN(插值)。
‘outside’:仅在有效值之外填充 NaN(外推)。
- downcast:可选,‘infer’ 或无,默认为无
如果可能的话,向下转换 dtypes。
- ``**kwargs``:可选的
要传递给插值函数的关键字参数。
- Series 或 DataFrame 或 None
返回与调用者相同的对象类型,在部分或全部
NaN
值或 None 如果inplace=True
插值。
参数:
返回:
注意:
‘krogh’, ‘piecewise_polynomial’、‘spline’, ‘pchip’ and ‘akima’ 方法是类似名称的各自 SciPy 实现的包装器。这些使用索引的实际数值。有关其行为的更多信息,请参阅 SciPy 文档和 SciPy 教程。
例子:
通过线性插值将
NaN
填充到Series
中。>>> s = pd.Series([0, 1, np.nan, 3]) >>> s 0 0.0 1 1.0 2 NaN 3 3.0 dtype:float64 >>> s.interpolate() 0 0.0 1 1.0 2 2.0 3 3.0 dtype:float64
通过填充在一个系列中填充
NaN
,但一次最多填充两个连续的NaN
。>>> s = pd.Series([np.nan, "single_one", np.nan, ... "fill_two_more", np.nan, np.nan, np.nan, ... 4.71, np.nan]) >>> s 0 NaN 1 single_one 2 NaN 3 fill_two_more 4 NaN 5 NaN 6 NaN 7 4.71 8 NaN dtype:object >>> s.interpolate(method='pad', limit=2) 0 NaN 1 single_one 2 single_one 3 fill_two_more 4 fill_two_more 5 fill_two_more 6 NaN 7 4.71 8 4.71 dtype:object
通过多项式插值或样条在系列中填充
NaN
:两种‘polynomial’ and ‘spline’ 方法都要求您还指定order
(int)。>>> s = pd.Series([0, 2, np.nan, 8]) >>> s.interpolate(method='polynomial', order=2) 0 0.000000 1 2.000000 2 4.666667 3 8.000000 dtype:float64
使用线性插值沿每列向前(即向下)填充 DataFrame。
请注意‘a’ 列中的最后一个条目如何以不同的方式进行插值,因为在它之后没有条目可用于插值。请注意 ‘b’ 列中的第一个条目如何保持
NaN
,因为在它之前没有条目可用于插值。>>> df = pd.DataFrame([(0.0, np.nan, -1.0, 1.0), ... (np.nan, 2.0, np.nan, np.nan), ... (2.0, 3.0, np.nan, 9.0), ... (np.nan, 4.0, -4.0, 16.0)], ... columns=list('abcd')) >>> df a b c d 0 0.0 NaN -1.0 1.0 1 NaN 2.0 NaN NaN 2 2.0 3.0 NaN 9.0 3 NaN 4.0 -4.0 16.0 >>> df.interpolate(method='linear', limit_direction='forward', axis=0) a b c d 0 0.0 NaN -1.0 1.0 1 1.0 2.0 -2.0 5.0 2 2.0 3.0 -3.0 9.0 3 2.0 4.0 -4.0 16.0
使用多项式插值。
>>> df['d'].interpolate(method='polynomial', order=2) 0 1.0 1 4.0 2 9.0 3 16.0 Name:d, dtype:float64
相关用法
- Python pandas.DataFrame.insert用法及代码示例
- Python pandas.DataFrame.info用法及代码示例
- Python pandas.DataFrame.infer_objects用法及代码示例
- Python pandas.DataFrame.isna用法及代码示例
- Python pandas.DataFrame.iloc用法及代码示例
- Python pandas.DataFrame.iat用法及代码示例
- Python pandas.DataFrame.isin用法及代码示例
- Python pandas.DataFrame.isnull用法及代码示例
- Python pandas.DataFrame.items用法及代码示例
- Python pandas.DataFrame.iteritems用法及代码示例
- Python pandas.DataFrame.itertuples用法及代码示例
- Python pandas.DataFrame.idxmax用法及代码示例
- Python pandas.DataFrame.idxmin用法及代码示例
- Python pandas.DataFrame.iterrows用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
- Python pandas.DataFrame.rename用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.interpolate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。