python填补缺失值数据驱动代码_【分析篇】:Python 拉格朗日插值代码(缺失值)和数据规范化...

该博客介绍了使用Python进行数据驱动的缺失值处理,通过拉格朗日插值方法填充Excel数据中的异常缺失值,并展示了数据规范化过程,包括最小-最大规范化、零-均值规范化和小数定标规范化。
摘要由CSDN通过智能技术生成

A.数据源:catering_sale.xls

59ad57ec8b60

catering_sale.xls

A.拉格朗日插值代码(缺失值的数据处理)

import pandas as pd #导入数据分析库Pandas

from scipy.interpolate import lagrange #导入拉格朗日插值函数

inputfile = 'F:/python 数据挖掘分析实战/Data/catering_sale.xls' #销量数据路径

outputfile = 'F:/python 数据挖掘分析实战/Data/tmpsales.xls' #输出数据路径

data = pd.read_excel(inputfile) #读入数据

data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值,即变为缺失值 nan

#自定义列向量插值函数

#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5

def ployinterp_column(s, n, k=5):

y = s[list(range(n-k, n)) + list(range(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 (data[i].isnull())[j]: #如果为空即插值。

data[i][j] = ployinterp_column(data[i], j)

data.to_excel(outputfile) #输出结果,写入文件

B. 数据源:normalization_data.xls

59ad57ec8b60

normalization_data.xls

59ad57ec8b60

数据规范化结果

数据代码

import pandas as pd

datafile = 'F:/python 数据挖掘分析实战/Data/normalization_data.xls' #参数初始化

data = pd.read_excel(datafile, header = None) #读取数据

(data - data.min())/(data.max() - data.min()) #最小-最大规范化

(data - data.mean())/data.std() #零-均值规范化

data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化

参考资料:《Python数据分析与挖掘实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Python 代码段,使用拉格朗日插值法来填补 Excel 表格中的缺失值。请注意,这里只提供了一个示例代码段,并未完全测试,具体使用时需要根据实际情况进行修改。 ```python import pandas as pd import numpy as np from scipy.interpolate import lagrange # 读入 Excel 表格 data = pd.read_excel('your_excel_file.xlsx') # 定义插值函数 def lag_interpolate(column): """ column: 缺失值的 Series 列 返回插值后的 Series 列 """ # 使用拉格朗日插值法,k表示插值多项式的阶数 # 注意:k的值不能太大,否则容易造成过拟合 new_column = lagrange(column[column.notnull()].index, column[column.notnull()].values, k=2)(column.isnull().values.astype(float).cumsum()) return new_column # 对每个列进行缺失值处理 for column in data.columns: # 如果该列存在缺失值,则对其进行插值处理 if data[column].isnull().sum() > 0: data[column] = lag_interpolate(data[column]) # 输出处理好的表格 print(data) ``` 说明: 本代码段使用了 pandas 库来读取 Excel 表格,并使用 scipy 库中的 lagrange 函数来进行拉格朗日插值。具体的插值方法详见函数内部注释。 在使用拉格朗日插值时,需要注意防止过拟合。在本代码段中,我们使用了 k=2 的多项式来进行插值,但在实际使用中需要根据具体数据情况选取合适的阶数。 此外,本代码段仅支持对每列进行缺失值处理,如果需要对整个表格进行处理,可以考虑使用更为高级的插值方法,如 KNN、决策树等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值