python怎么去除异常值和缺失值的插值
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,python怎么去除异常值和缺失值的插值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.使用箱型法去除异常值:import num
千家信息网最后更新 2024年11月16日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安全错误
数据库的锁怎样保障安全
原神为什么不同服务器不能加好友
专科生软件开发就业率
地球变化数据库
六安精一网络技术有限公司
大专数据库应用与维护教材
公开数据库数据提取
iphone摔后数据库损坏
n8数据库软件
学经济的会用到数据库吗
软件开发培训教育
数据库的复制功能有哪些
币印矿池海外服务器IP
扫地机器人软件开发成本
es可视化数据库
数据库服务器选型方案
联泰网络技术有限公司
数据库管理的变迁
菲律宾云服务器
萝岗专业网络数据库维护
磴口云计算网络安全
服务器开机1长响
海康服务器摄像头被锁定
安德林网络安全
下列属于数据库访问技术的是
通达信为什么老是连接服务器
网络安全确保信息不外露
微信聊天记录数据库密码
网络安全进社区宣传活动
创守易网络技术
无限网络技术实训心得