当前位置: 首页 > news >正文

pandas 笔记: interpolate

一个用于填充 NaN 值的工具

1 基本用法

        

DataFrame.interpolate(method='linear', *, axis=0, limit=None, inplace=False, limit_direction=None, limit_area=None, downcast=_NoDefault.no_default, **kwargs)

2 主要参数

method

多种插值技术

  • linear: 默认值,使用线性插值。
  • time: 当数据索引是日期时,这是很有用的。
  • index: 使用索引的值进行插值。
  • polynomial: 多项式插值,需要指定 order 参数,例如 order=2 用于二次多项式插值。
  • pad/ffil:用前一个非缺失值来填充 NaN
  • nearest:最近的非 NaN 值
  • quadratic & cubic:二次和三次插值
  • barycentric:重心插值。它是根据给定值的重心来计算插值的
  • krogh:Krogh 插值
axis沿着那个轴插值
inplace是否替换原DataFrame
limit限制连续 NaN 值的数量,即连续的 NaN 值中有多少个可以被插值

假设你有一个序列 [1, NaN, NaN, NaN, 5],如果你设置 limit=2,那么只有前两个 NaN 值会被插值,而第三个会保持为 NaN
limit_direction:
  • 和limit相关,该参数用于指定插值的方向。
  • 可取值包括:
    • forward(默认值): 只从前往后插值。
    • backward: 只从后往前插值。
    • both: 既从前往后,又从后往前进行插值。
limit_area
  • 和limit相关,该参数用于用于决定哪些 NaN 值应被插值
  • limit_area 参数主要用于那些序列中,NaN 值可能出现在序列的开始或结束位置的情况

  • None:

    • 默认值。这意味着所有的 NaN 都可以被插值,没有任何限制。
  • inside:

    • 仅插值 NaN 值,如果它们被有效的观测值(非 NaN)包围。换句话说,如果一个 NaN 序列的前后都有非 NaN 的值,则这个 NaN 序列可以被插值。
    • 这意味着序列开头和结尾的连续 NaN 值不会被插值。
  • outside:

    • 仅插值开头或结尾的 NaN 值。中间的 NaN 序列,只要它们被非 NaN 值包围,都不会被插值。

2 举例

2.1 基本用法

import pandas as pd
import numpy as nps = pd.Series([4,np.nan, np.nan, 3, np.nan, np.nan, 6, np.nan, np.nan,10])s.interpolate(method='linear')
'''
0     4.000000
1     3.666667
2     3.333333
3     3.000000
4     4.000000
5     5.000000
6     6.000000
7     7.333333
8     8.666667
9    10.000000
dtype: float64
'''

2.2 limit

import pandas as pd
import numpy as nps = pd.Series([1, np.nan, np.nan, np.nan, 5])s.interpolate(method='linear', limit=2)
'''
0    1.0
1    2.0
2    3.0
3    NaN
4    5.0
dtype: float64
'''

2.3  limit_direction

import pandas as pd
import numpy as nps = pd.Series([1, np.nan, np.nan, np.nan, 5])s.interpolate(method='linear', limit=1, limit_direction='forward')
'''
0    1.0
1    2.0
2    NaN
3    NaN
4    5.0
dtype: float64
'''s.interpolate(method='linear', limit=1, limit_direction='backward')
'''
0    1.0
1    NaN
2    NaN
3    4.0
4    5.0
dtype: float64
'''s.interpolate(method='linear', limit_area=None)
'''
0    NaN
1    NaN
2    3.0
3    4.0
4    5.0
5    6.0
6    6.0
7    6.0
dtype: float64
'''

http://www.lryc.cn/news/168657.html

相关文章:

  • 应用程序接口(API)安全的入门指南
  • JavaWeb概念视频笔记
  • 网络请求【小程序】
  • python 调用adb shell
  • vue3 使用 vite 构建的项目打包后无法访问
  • C语言指针详解(4)———找工作必看指针笔试题汇总
  • 03MyBatis-Plus中的常用注解
  • Android 修复在 Settings 首页,按键盘方向键逐个单选
  • SpringMvc第六战-【SpringMvcJSON返回异常处理机制】
  • idea-Tabnine
  • 联通面试题
  • [计组03]进程详解2
  • 使用redis+lua通过原子减解决超卖问题【示例】
  • WebFlux异常处理:onErrorReturn和onErrorResume
  • 《动手学深度学习 Pytorch版》 4.5 权重衰减
  • 数据脱敏的风险量化评估介绍
  • SpringCloudGateway网关实战(三)
  • 08在MyBatis-Plus中配置多数据源
  • Centos8安装docker并配置Kali Linux图形化界面
  • 游戏开发初等数学基础
  • svg图片代码data:image/svg+xml转png图片方法
  • 解决问题:Replace `‘vue‘;⏎` with `“vue“;`
  • ThinkPHP 5.0通过composer升级到5.1,超级简单
  • 计算机竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉
  • 一文了解大模型工作原理——以ChatGPT为例
  • CPP-Templates-2nd--第十九章 萃取的实现 19.7---
  • python 采用selenium+cookies 获取登录后的网页
  • 【测试开发】答疑篇 · 什么是软件测试
  • 深入解析顺序表:揭开数据结构的奥秘,掌握顺序表的精髓
  • 数据风险量化评估方案