• pandas 笔记: interpolate


    一个用于填充 NaN 值的工具

    1 基本用法

            

    1. DataFrame.interpolate(
    2. method='linear',
    3. *,
    4. axis=0,
    5. limit=None,
    6. inplace=False,
    7. limit_direction=None,
    8. limit_area=None,
    9. downcast=_NoDefault.no_default,
    10. **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 基本用法

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

    2.2 limit

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

    2.3  limit_direction

    1. import pandas as pd
    2. import numpy as np
    3. s = pd.Series([1, np.nan, np.nan, np.nan, 5])
    4. s.interpolate(method='linear', limit=1, limit_direction='forward')
    5. '''
    6. 0 1.0
    7. 1 2.0
    8. 2 NaN
    9. 3 NaN
    10. 4 5.0
    11. dtype: float64
    12. '''
    13. s.interpolate(method='linear', limit=1, limit_direction='backward')
    14. '''
    15. 0 1.0
    16. 1 NaN
    17. 2 NaN
    18. 3 4.0
    19. 4 5.0
    20. dtype: float64
    21. '''
    22. s.interpolate(method='linear', limit_area=None)
    23. '''
    24. 0 NaN
    25. 1 NaN
    26. 2 3.0
    27. 3 4.0
    28. 4 5.0
    29. 5 6.0
    30. 6 6.0
    31. 7 6.0
    32. dtype: float64
    33. '''

  • 相关阅读:
    java计算机毕业设计校园临时用工网站MyBatis+系统+LW文档+源码+调试部署
    HTB[入门]Redeemer题解
    PowerMax——业界首个引入NVIDIA BlueField DPU的高端存储
    k8s 启动和删除pod
    你好,面试官 | 终于上岸了,你会哪些 JVM 调优参数?呆住了。。。
    windows 快捷操作
    短视频文案素材哪里找?推荐几个既好看又好用的素材网站
    【多线程】Thread的interrupt()
    手机异步发送短信验证码解决方案-Celery+redis
    构建系列之前端脚手架vite
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/132856223