数学建模——插值算法Python实现

        

        今天在处理数据的时候发现有很多的缺失值,这时候的插值算法就登场了,但是我使用了一下spss的插值器发现真的是插值的一些数据就是一坨,根本不能看,所以我就打算使用Python来实现一下插值算法。

        

目录

代码解释

总体代码

示例

插值前

插值后

总结


代码解释

        这段代码使用了 pandasscipy.interpolate 库来进行线性插值,用于填补数据框中的缺失值。

  1. pd.read_excel('D:\\文件.xlsx'):使用 pandasread_excel 函数读取 Excel 文件,得到一个数据框 df

  2. df_new = df.copy():创建一个新的数据框 df_new,该数据框将用于存储插值后的结果。通过使用 copy() 方法,确保对原始数据框的修改不会影响到新的数据框。

  3. 遍历每一列:

    for column in df.columns:

    通过这个循环,代码将遍历数据框中的每一列。

  4. 检查列是否有缺失值:

    if df[column].isnull().any():

    使用 isnull() 方法检查当前列是否包含缺失值,如果有,则进入下面的处理步骤。

  5. 创建插值函数:

    interp = interp1d(df.index[df[column].notnull()],df[column].dropna(),fill_value="extrapolate")

    使用 scipy.interpolate 中的 interp1d 函数创建一个插值函数。该函数利用非空值的索引和对应的值来进行线性插值。fill_value="extrapolate" 意味着对于超出原始范围的值,使用线性外推。

  6. 使用插值函数填充缺失值:

    df_new[column] = interp(df.index)

    通过调用插值函数,将当前列的缺失值填充为线性插值的结果。

  7. 将结果写入新的 Excel 文件:

    df_new.to_excel('D:\\res.xlsx', index=False)

    将插值后的数据框保存为新的 Excel 文件。

        总体而言,这段代码通过遍历每一列,检查缺失值,然后使用线性插值填充缺失值,最后将结果保存到新的 Excel 文件。插值方法采用了线性插值。


总体代码

import pandas as pd
from scipy.interpolate import interp1d

# 读取Excel文件
df = pd.read_excel('D:\\文件.xlsx')

# 创建一个新的DataFrame来存储结果
df_new = df.copy()

# 遍历每一列
for column in df.columns:
    # 如果该列有缺失值
    if df[column].isnull().any():
        # 创建一个插值函数
        interp = interp1d(df.index[df[column].notnull()], df[column].dropna(), fill_value="extrapolate")
        # 使用插值函数填补缺失值
        df_new[column] = interp(df.index)

# 将结果写入新的Excel文件
df_new.to_excel('D:\\res.xlsx', index=False)

 

示例

插值前

插值后

根据前后文来看,插值效果还是很不错的(*^▽^*)

总结

Python果然是万能的~!!

ヾ( ̄▽ ̄)Bye~Bye~

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 09:34:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 09:34:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 09:34:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 09:34:05       20 阅读

热门阅读

  1. 上线服务器流程用法及说明

    2024-01-29 09:34:05       36 阅读
  2. Anaconda中安装包下载超时

    2024-01-29 09:34:05       43 阅读
  3. G1与ZGC

    G1与ZGC

    2024-01-29 09:34:05      42 阅读
  4. 第二百九十三回

    2024-01-29 09:34:05       41 阅读
  5. 【leetcode100-074/075/076】【堆】三题合集

    2024-01-29 09:34:05       35 阅读
  6. 【力扣经典面试题】合并两个有序数组

    2024-01-29 09:34:05       36 阅读
  7. 算法提升——LeetCode382 场周赛总结

    2024-01-29 09:34:05       35 阅读
  8. go语言基础strconv类型转换

    2024-01-29 09:34:05       42 阅读
  9. 【身份验证和授权比较】

    2024-01-29 09:34:05       35 阅读