用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。