import pandas as pd
from scipy.interpolate import lagrange

data = sjy_data
data.loc[(data['businessclassification'] < 0) | (data['businessclassification'] > 200), 'businessclassification'] = None

def ployinterp_column(s, n, k=5):
    if n < k:
        y = s[n+1:n+1+k]
    else:
        y = s[n-k:n] + s[n+1:n+1+k]
        y = y[y.notnull()] 
    return lagrange(y.index, list(y))(n) 

for i in data.columns:
    for j in range(len(data)):
        if pd.isnull(data[i][j]): 
            data[i][j] = ployinterp_column(data[i], j)

data

代码说明:

  1. 导入库: 导入 pandasscipy.interpolate.lagrange 库。
  2. 数据准备: 加载数据到 data 变量中。代码中假设数据已经存在,并命名为 sjy_data
  3. 数据清理:businessclassification 列中小于 0 或大于 200 的值设置为 None
  4. 定义插值函数: ployinterp_column 函数用于计算指定列的指定行处的插值值。
    • 参数:
      • s: 需要插值的列数据。
      • n: 需要插值的行的索引。
      • k: 用于插值的周围数据点的数量,默认值为 5。
    • 返回值:插值后的值。
  5. 循环遍历数据: 使用双重循环遍历所有列和行,如果遇到缺失值,则使用 ployinterp_column 函数进行插值。
  6. 输出结果: 最后输出插值后的 data 变量。

注意:

  • 本代码仅用于演示插值方法,实际使用时可能需要根据具体数据特点进行调整。
  • 插值方法的选择需要根据数据类型和数据特点进行选择。Lagrange 插值法适合于数据点之间存在平滑变化的情况。
  • 如果数据中存在较多缺失值,建议使用其他更 robust 的插值方法。
Python Pandas 数据插值:使用 Lagrange 插值法填充缺失值

原文地址: https://www.cveoy.top/t/topic/8hb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录