python数据预处理
2022/1/12 17:03:41
本文主要是介绍python数据预处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据清洗
缺失值处理,规范
import pandas as pd from scipy.interpolate import lagrange inputfile='E:/LearningSoftware/AboutPython/24064925aueh/01-数据和代码/chapter4/demo/data/catering_sale.xls' outputfile='E:/LearningSoftware/AboutPython/24064925aueh/01-数据和代码/chapter4/demo/data/sales.xls' data=pd.read_excel(inputfile) data.loc[14] data['销量'][(data['销量']<400)|(data['销量']>5000)]=None#过滤异常值,将其变成空值 #自定义列向量插值函数 #s为列向量,n为被插值的地方,k为取前后的数据个数,默认为5 def ployinterp_column(s, n, k=5): if(n<=k and n+k<len(s)): y=s[list(range(1,n))+list(range(n+1,n+1+k))] elif(n<=k and n+k>len(s)): y=s[list(range(1,n))+list(range(n+1,len(n)))] elif(n>k and n+k>len(s)): y=s[list(range(n-k,n))+list(range(n+1,len(n)))] else: 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) #输出结果,写入文件 #数据规范 #-*- coding: utf-8 -*- datafile='E:/LearningSoftware/AboutPython/24064925aueh/01-数据和代码/chapter4/demo/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))#小数定标规范化
连续数据离散化
atafile='E:/LearningSoftware/AboutPython/24064925aueh/01-数据和代码/chapter4/demo/data/discretization_data.xls' data=pd.read_excel(datafile) data=data['肝气郁结证型系数'].copy() k=4 d1=pd.cut(data, k,labels=range(k))#等宽离散化,各个类依次命名为0,1,2,3 #等频率离散化 w=[1.0*i/k for i in range(k+1)] w=data.describe(percentiles=w)[4:4+k+1] w w[0]=w[0]*(1-1e-10) d2=pd.cut(data,w,labels=range(k)) from sklearn.cluster import KMeans kmodel=KMeans(n_clusters=k,n_jobs=4)#n_jobs是并行数,一般等于CPU个数 kmodel.fit(data.values.reshape((len(data),1))) c=pd.DataFrame(kmodel.cluster_centers_).sort_values#输出聚类中心,并且排序 c w=pd.rolling_mean(c,2).iloc[1:]#相邻两项求中点,作为边界点 d3=pd.cut(data,w,labels=range(k)) def cluster_plot(d,k):#自定义作图函数来显示聚类结果 for j in range(0,k): plt.plot(data[d==j], [j for i in d[d==j]],'o') plt.ylim(-0.5,k-0.5) return plt cluster_plot(d1,k).show() cluster_plot(d2,k).show() cluster_plot(d3,k).show() #线损率属性构造 import pandas as pd #参数初始化 inputfile= '../data/electricity_data.xls' #供入供出电量数据 outputfile = '../tmp/electricity_data.xls' #属性构造后数据文件 data = pd.read_excel(inputfile) #读入数据 data[u'线损率'] = (data[u'供入电量'] - data[u'供出电量'])/data[u'供入电量'] data.to_excel(outputfile, index = False) #保存结果
数据规约
属性规约 使用PCA
from sklearn.decomposition import PCA pca=PCA() pca.fit(data) pca.components_ pca.explained_variance_ratio_ pca=PCA(3) pca.fit() low_d=pca.transform(data)#对原数据降维 pd.DataFrame(low_d).to_excel(outputfile) pca.inverse_transform(low_d)#复原数据
这篇关于python数据预处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识