python怎么去除异常值和缺失值的插值
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,python怎么去除异常值和缺失值的插值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.使用箱型法去除异常值:import num
千家信息网最后更新 2025年02月01日python怎么去除异常值和缺失值的插值
python怎么去除异常值和缺失值的插值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.使用箱型法去除异常值:
import numpy as npimport pandas as pdimport matplotlib as pltimport osdata = pd.read_excel('try.xls', header=0)# print(data.shape)# print(data.head(10))# print(data.describe())neg_list = ['位移']print("(1)数据的行数为:")R = data.shape[0]print(R)print("(2)小于或大于阈值的数据提取:")for item in neg_list: neg_item = data[item]<2000 print(item + '小于2000的有' + str(neg_item.sum()) + '个')print("(3)异常值的个数:")for item in neg_list: iqr = data[item].quantile(0.75) - data[item].quantile(0.25) q_abnormal_L = data[item] < data[item].quantile(0.25) - 1.5 * iqr q_abnormal_U = data[item] > data[item].quantile(0.75) + 1.5 * iqr print(item + '中有' + str(q_abnormal_L.sum() + q_abnormal_U.sum()) + '个异常值')print("(4)箱型图确定上下限:")for item in neg_list: iqr = data[item].quantile(0.75) - data[item].quantile(0.25) Too_small = data[item].quantile(0.25) - 1.5 * iqr Too_big = data[item].quantile(0.25) + 1.5 * iqrprint("下限是", Too_small)print("上限是", Too_big )print("(5)所有数据为:")a = []for i in neg_list: a.append(data[i])print(a)print("(6)所有正常数据:")b = []j = 0while j < R: if (a[0][j] > Too_small): if (a[0][j] < Too_big): b.append(a[0][j]) j += 1print(b)print("(7)所有异常数据:")c = []i = 0while i < R: if (a[0][i] < Too_small or a[0][i] > Too_big): c.append(a[0][i]) a[0][i] = None i +=1print(c)print("(8)把所有异常数据删除后:")print(a)print("(9)所有数据处理后输出:")d = []k = 0while k < R: d.append(a[0][k]) k +=1print(d)df = pd.DataFrame(d,columns= ['位移'])df.to_excel("try_result.xls")
2.拉格朗日插值:
import osimport pandas as pdimport numpy as npfrom scipy.interpolate import lagrangeimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号# 数据的读取data = pd.read_excel('try.xls', header=0)neg_list = ['位移']# 数据的行数R = data.shape[0]# 异常数据的个数for item in neg_list: iqr = data[item].quantile(0.75) - data[item].quantile(0.25) q_abnormal_L = data[item] < data[item].quantile(0.25) - 1.5 * iqr q_abnormal_U = data[item] > data[item].quantile(0.75) + 1.5 * iqr # print(item + '中有' + str(q_abnormal_L.sum() + q_abnormal_U.sum()) + '个异常值')# 确定数据上限和下限for item in neg_list: iqr = data[item].quantile(0.75) - data[item].quantile(0.25) Too_small = data[item].quantile(0.25) - 1.5 * iqr Too_big = data[item].quantile(0.25) + 1.5 * iqrdata[u'位移'][(data[u'位移']Too_big)] = None #过滤异常值,将其变为空值#s为列向量,n为被插值位置,k为取前后的数据个数def ployinter(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] = ployinter(data[i],j)# print(data[u'位移'])# 输出拉格朗日插值后的数据data.to_excel("try_result.xls")# 把表格列数据调整为arr,arr为修改后的数据print("拉格朗日插值后的数据:")d = []k = 0while k < R: d.append(data[u'位移'][k]) k +=1# print(d)arr = np.array(d)print(arr)# 输出图像x = np.arange(len(d))plt.plot(x,d,'b-',label="one", marker='*',markersize=4,linewidth=1) # b代表blue颜色 -代表直线plt.title('位移曲线')plt.legend(loc='upper left',bbox_to_anchor=(1.0,1.0))# 直接更改X轴坐标数# plt.xticks((0,1,2,3,4,5,6,7,8),('0', '1', '2', '3', '4', '5', '6', '7', '8'))plt.xlabel('时间/h')plt.ylabel('位移/mm')#plt.grid(x1)plt.show()
3.数据拟合:
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.optimize import leastsqdef Fun(p, x): # 定义拟合函数形式 a1, a2, a3 , a4 = p return a1 * x ** 3 + a2 * x ** 2 + a3 * x + a4def error(p, x, y): # 拟合残差 return Fun(p, x) - ydef main(): x = np.linspace(1, 31, 31) # 创建时间序列 data = pd.read_excel('try.xls', header=0) y = data[u'位移'] p0 = [0.1, -0.01, 100, 1000] # 拟合的初始参数设置 para = leastsq(error, p0, args=(x, y)) # 进行拟合 y_fitted = Fun(para[0], x) # 画出拟合后的曲线 plt.figure plt.plot(x, y, 'r', label='Original curve') plt.plot(x, y_fitted, '-b', label='Fitted curve') plt.legend() plt.show() print(para[0])if __name__ == '__main__': main()
4.输出图像:
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号jiaodu = ['0', '15', '30', '15', '60', '75', '90', '105', '120']x = range(len(jiaodu))y = [85.6801, 7.64586, 86.0956, 159.229, 179.534, 163.238, 96.4436, 10.1619, 90.9262,]#plt.figure(figsize=(10, 6))plt.plot(x,y,'b-',label="1", marker='*',markersize=7,linewidth=3) # b代表blue颜色 -代表直线plt.title('各个区域亮度变化')plt.legend(loc='upper left',bbox_to_anchor=(1.0,1.0))plt.xticks((0,1,2,3,4,5,6,7,8),('0', '15', '30', '15', '60', '75', '90', '105', '120'))plt.xlabel('角度')plt.ylabel('亮度')#plt.grid(x1)plt.show()
关于python怎么去除异常值和缺失值的插值问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
数据
插值
代表
输出
个数
问题
拉格
朗日
缺失
上限
下限
亮度
图像
时间
曲线
更多
标签
直线
负号
颜色
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
世界上最大的网络安全事故
网络技术中ap是什么意思
网络安全事件应急情况说明
河南网络安全专业专科学校
数据库怎么用代码建库
无锡常规软件开发费用是多少
软件要求填写服务器地址
学生网络安全知识竞赛总结
辽宁什么是网络技术分类标准
转介绍软件开发
网络服务器怎么连接各电脑
网址注册与服务器的关系
软件工程常用软件开发模型
阳泉展厅互动软件开发
数字货币网络安全大数据概念股
方舟服务器管理员滥用权限
中国的网络技术发展现状
幼教教育软件开发
我的世界1.710版本服务器
英雄联盟水晶之痕的服务器在哪里
美国银行网络安全
数据库为什么不能创建表
贵州华为服务器虚拟主机
西安优酷网络技术有限公司
我的世界服务器被勒索
计算机网络技术5G就业形势
网络安全从我做起手抄报文字
国土局网络安全
汽车车载网络技术介绍
网络安全国信安