pandas dataframe dataframe.interpolate()函数-ag捕鱼王app官网

pandas dataframe dataframe.interpolate()函数

作者:迹忆客 最近更新:2024/04/22 浏览次数:

python pandas dataframe.interpolate() 函数使用插值技术在 dataframe 中填充 nan 值。


pandas.dataframe.interpolate() 语法

dataframe.interpolate(
    method="linear",
    axis=0,
    limit=none,
    inplace=false,
    limit_direction="forward",
    limit_area=none,
    downcast=none,
    **kwargs
)

参数

method linear, time, index, values, nearest, zero, slinear, quadratic, cubic, barycentric, krogh, polynomial, spline, piecewise_polynomial, from_derivatives, pchip, akimanone。用于插值 nan 的方法。
axis 沿行(axis=0)或列(axis=1)插补缺失的数值
limit 要内插的最大连续 nan
inplace 布尔型。如果 true,就地修改调用方 dataframe
limit_direction forward, backwardboth。当指定 limit 时,将沿 nansdirection 进行插值。
limit_area none, insideoutside。当指定 limit 时,对插值的限制。
downcast 字典。指定向下转换数据类型
**kwargs 插值函数的关键字

返回值

如果 inplacetrue,则使用给定的 method 对所有 nan 值进行内插的 dataframe;否则为 none


示例代码:用 dataframe.interpolate() 方法对 dataframe 中所有 nan 值进行内插

import pandas as pd
df = pd.dataframe({'x': [1, 2, 3, none, 3],
                   'y': [4, none, 8, none, 3]})
print("dataframe:")
print(df)
filled_df = df.interpolate()
print("interploated dataframe:")
print(filled_df)

输出:

dataframe:
     x    y
0  1.0  4.0
1  2.0  nan
2  3.0  8.0
3  nan  nan
4  3.0  3.0
interploated dataframe:
     x    y
0  1.0  4.0
1  2.0  6.0
2  3.0  8.0
3  3.0  5.5
4  3.0  3.0

它使用 linear 插值方法对 dataframe 中的所有 nan 值进行内插。

该方法与 pandas.dataframe.fillna() 相比更加智能,后者使用一个固定的值来替换 dataframe. 中的所有 nan 值。


示例代码:dataframe.interpolate() 方法用 method 参数

我们也可以在 dataframe.interpolate() 函数中设置 method 参数值,用不同的插值技术对 dataframe 中的 nan 值进行插值。

import pandas as pd
df = pd.dataframe({'x': [1, 2, 3, none, 3],
                   'y': [4, none, 8, none, 3]})
print("dataframe:")
print(df)
filled_df = df.interpolate(method='polynomial', order=2)
print("interploated dataframe:")
print(filled_df)

输出:

dataframe:
     x    y
0  1.0  4.0
1  2.0  nan
2  3.0  8.0
3  nan  nan
4  3.0  3.0
interploated dataframe:
          x      y
0  1.000000  4.000
1  2.000000  7.125
2  3.000000  8.000
3  3.368421  6.625
4  3.000000  3.000

该方法使用二阶多项式插值方法对 dataframe 中的所有 nan 值进行插值。

这里,order=2polynomial 函数的关键字参数。


示例代码:pandas dataframe.interpolate() 方法使用 axis 参数沿 row 轴进行插值

import pandas as pd
df = pd.dataframe({'x': [1, 2, 3, none, 3],
                   'y': [4, none, 8, none, 3]})
print("dataframe:")
print(df)
filled_df = df.interpolate(axis=1)
print("interploated dataframe:")
print(filled_df)

输出:

dataframe:
     x    y
0  1.0  4.0
1  2.0  nan
2  3.0  8.0
3  nan  nan
4  3.0  3.0
interploated dataframe:
     x    y
0  1.0  4.0
1  2.0  2.0
2  3.0  8.0
3  nan  nan
4  3.0  3.0

这里,我们设置 axis=1,以沿行轴插值 nan 值。在第 2 行,nan 值被沿第 2 行线性内插替换。

但是,在第 4 行中,由于第 4 行中的两个值都是 nan,所以即使在内插后,nan 值仍然存在。


示例代码:dataframe.interpolate() 方法带 limit 参数

dataframe.interpolate() 方法中的 limit 参数限制了该方法所要填充的连续 nan 值的最大数量。

import pandas as pd
df = pd.dataframe({'x': [1, 2, 3, none, 3],
                   'y': [4, none, none, none, 3]})
print("dataframe:")
print(df)
filled_df = df.interpolate( limit = 1)
print("interploated dataframe:")
print(filled_df)

输出:

dataframe:
     x    y
0  1.0  4.0
1  2.0  nan
2  3.0  nan
3  nan  nan
4  3.0  3.0
interploated dataframe:
     x     y
0  1.0  4.00
1  2.0  3.75
2  3.0   nan
3  3.0   nan
4  3.0  3.00

在这里,当一列中的一个 nan 值从上到下被填满后,同一列中下一个连续的 nan 值将保持不变。


示例代码:dataframe.interpolate() 方法带 limit_direction 参数的方法

dataframe.interpolate() 方法中的 limit-direction 参数控制沿着特定轴的方向,在这个方向上进行数值插值。

import pandas as pd
df = pd.dataframe({'x': [1, 2, 3, none, 3],
                   'y': [4, none, none, none, 3]})
print("dataframe:")
print(df)
filled_df = df.interpolate(limit_direction ='backward', limit = 1)
print("interploated dataframe:")
print(filled_df)

输出:

dataframe:
     x    y
0  1.0  4.0
1  2.0  nan
2  3.0  nan
3  nan  nan
4  3.0  3.0
interploated dataframe:
     x     y
0  1.0  4.00
1  2.0   nan
2  3.0   nan
3  3.0  3.25
4  3.0  3.00

在这里,当一列中的 nan 从底部填入后,同一列中下一个连续的 nan 值将保持不变。


dataframe.interpolate() 方法对时间序列数据进行内插

import pandas as pd
dates=['april-10', 'april-11', 'april-12', 'april-13']
fruits=['apple', 'papaya', 'banana', 'mango']
prices=[3, none, 2, 4]
df = pd.dataframe({'date':dates ,
                   'fruit':fruits ,
                   'price': prices})
print(df)
df.interpolate(inplace=true)
print("interploated dataframe:")
print(df)

输出:

       date   fruit  price
0  april-10   apple    3.0
1  april-11  papaya    nan
2  april-12  banana    2.0
3  april-13   mango    4.0
interploated dataframe:
       date   fruit  price
0  april-10   apple    3.0
1  april-11  papaya    2.5
2  april-12  banana    2.0
3  april-13   mango    4.0

由于 inplace=true,在调用 interpolate() 函数后,原 dataframe 被修改。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图