Python用拉格朗日法进行数据横向插值
在工作中,好多数据存在缺失值,对于Excel 中对数据采用列插值,张良均的《Python数据分析与挖掘实战》已有代码,但是我今天遇到数据需要横向插值。
import pandas as pd #导入数据分析库Pandas
from scipy.interpolate import lagrange #导入拉格朗日插值函数name='北京.xlsx'df = pd.read_excel(name, sheetname='小区均价')#lt=['2017-01', '2017-02', '2017-03', '2017-04', '2017-05',
# '2017-06', '2017-07', '2017-08']lt=['2015-12', '2016-01', '2016-02', '2016-03', '2016-04', '2016-05','2016-06', '2016-07', '2016-08', '2016-09', '2016-10', '2016-11','2016-12', '2017-01', '2017-02', '2017-03', '2017-04', '2017-05','2017-06', '2017-07', '2017-08']
#自定义列向量插值函数
#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5data=df[lt][0:df.shape[0]]
def ployinterp_column(s, n, k=3):y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数y = y[y.notnull()] #剔除空值if len(y)>k:return int(lagrange(y.index, list(y))(n)) #插值并返回插值结果#逐个元素判断是否需要插值
aa=list(data.columns)
for i in range(len(aa)):for j in range(len(data)):if (data[aa[i]].isnull())[j]: #如果为空即插值。pp=pd.Series(list(data.iloc[j:j+1].values.flatten()))data[aa[i]][j] = ployinterp_column(pp, i)data.to_excel('luoganttcc6.xlsx') #输出结果,写入文件'''dframe = pd.read_excel('c.xlsx', sheetname='小区均价')writer = ExcelWriter('lg.xlsx')data.to_excel(writer,'Sheet2')writer.save()dindex=data.columnsdf[dindex]=data'''
dindex=data.columns#提取修改数据的标签
df[dindex]=data #将插值修改后的数据赋值给原数据
#由于不知何故,将dataframe赋值后,Excel只有一个数据,索性重新copy,paste
dfcity = pd.read_excel(name, sheetname='城市均价')
dfregion = pd.read_excel(name, sheetname='区域均价')
writer = pd.ExcelWriter(name)dfcity.to_excel(writer,'城市均价')
dfregion.to_excel(writer,'区域均价')
df.to_excel(writer,'小区均价')
writer.save()
今天好累啊!!!终于写出来了。。。。
代码链接 提取密码ee1z
Python用拉格朗日法进行数据横向插值相关推荐
- Python学习笔记:一维数据的插值
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其它点处的近似值.与拟合不同的是,要求曲线通过所有的已知数据.SciPy的interpolate模块提供了许多对数据进 ...
- python给出数据点进行插值_Python对数据进行插值和下采样的方法
使用Python进行插值非常方便,可以直接使用scipy中的interpolate import numpy as np x1 = np.linspace(1, 4096, 1024) x_new = ...
- 函数插值的python实现——拉格朗日、牛顿插值
函数插值的python实现--拉格朗日.牛顿插值 1. 拉格朗日(Larange)插值 实现代码 2. 牛顿(Larange)插值 2.1 牛顿插值多项式的基本形式 2.2 牛顿均差插值多项式 (1) ...
- 【数值分析】python实现拉格朗日插值
基于python实现拉格朗日插值,可自定义节点数量n. 一.拉格朗日插值公式 二.python代码 import matplotlib.pyplot as plt import numpy as np ...
- python与GIS数据处理——随机森林算法插值
背景 这个是我系列插值文章的第三篇,使用机器学习插值(使用随机森林算法插值). 代码链接 代码我已经放在Github上面了,免费分享使用,https://github.com/yuanzhoulvpi ...
- 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
<MATLAB数值实验一(数据的插值运算及其应用完整版>由会员分享,可在线阅读,更多相关<MATLAB数值实验一(数据的插值运算及其应用完整版(6页珍藏版)>请在人人文库网上搜 ...
- python用xlrd怎么清洗数据_用Python进行数据清洗!
导读:数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复.错误.缺失.异常类数据. Python资源共享群:626017123 01 重复值处理 数据录入过程.数据 ...
- python对浮点类型的数据进行格式化_(自用)Python Log2 数据类型、字符编码、格式化...
数据类型 1.整数 十六进制可以使用0x+数字0-9(字母a-f). 2.浮点数 一般使用科学计数法,用e代替10,比如1.2e5,为1.2×10^5. 3.字符串 可以使用单引号' ',或者双引号& ...
- python穷举法_python 穷举指定长度的密码例子
本程序可根据给定的字符字典,穷举指定长度的所有字符串: def get_pwd(str, num): if(num == 1): for x in str: yield x else: for x i ...
最新文章
- TMS Scripter importtool的使用
- Markovdecisionprocesses_Discretestochasticdynamicprogramming下载
- documentbodyscrollTop的值总为零的解决办法
- 此加载项为此计算机的所有用户安装_MDI Jade 6.5软件安装教程
- 老板让我搞数字化转型?成功之后,我整理了这套超全的方法论
- mysql 分库分表中间件 mycat_阿里开源的分布式分库分表中间件之MyCat从入门到放弃...
- 获取synchronized锁中的阻塞队列中的线程是非公平的
- 硬盘序列号更改工具 v0.1 下载
- [转载]AutoCAD2013 以上利用AccoreConsole+ c# NetApi 批量处理图纸
- 激光导航AGV的停车精度受环境变化的影响有多大?
- tex 表格内容换行_如何让latex表格中一个单元格的文字换行
- 史上最全ASCII码对照表0-255(%d)
- 基于TCP的STM32 IAP bootloader初步设计
- 常用计算机防治病毒软件有哪些,如何防治计算机病毒?常用的反病毒软件有哪些?...
- 2021-07-27 百度飞桨AI达人创造营手账
- 短视频素材怎么找?怎么做短视频运营?
- python3是什么意思啊_python3指的是什么意思
- python中转义是什么意思_python中的转义
- 机器学习基石(林轩田)第一章 笔记与感悟总结
- Mac 上 vscode 的 rust-analyzer 扩展无法追踪/跟踪方法定义
热门文章
- linux 小白启航之路-搭建linuxDHCP中继服务器
- 一款超级简单的瀑布流的制作
- 【node测试系列】几款前端测试断言库(Assertions lib)的选型总结
- CentOS远程硬盘重装技术之我见
- #舍得Share#Flash Media Server4.5迅雷高速下载地址by lwxshow
- 鸟哥的Linux私房菜基础学习篇(第二版)第二章课后习题与答案
- #.NET分别以GET和POST方式抓取远程页面
- [票据打印]打印走纸控制(1) - 设置纸型
- linux kref详解
- 802.11的隐藏节点和RTS,CTS机制