赞
踩
数据分析中的预处理步骤是数据分析流程中的重要环节,它的目的是清洗、转换和整理原始数据,以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤:
数据收集:确定数据来源,可能是数据库、文件、API或网络抓取,确保数据的质量和完整性。
数据清洗(Data Cleaning):
数据集成(Data Integration):如果数据来自多个源,需要合并和统一数据格式。
数据转换(Data Transformation):
数据降维(Dimensionality Reduction):如果数据维度过高,可能使用PCA(主成分分析)或LDA(潜在狄利克雷分配)等方法减少冗余。
数据划分(Data Splitting):将数据集分为训练集、验证集和测试集,用于模型的训练和评估。
数据采样(Sampling):对于大规模数据,可能需要进行随机抽样或分层抽样以平衡类别分布。
数据可视化(Exploratory Data Analysis, EDA):初步了解数据的分布、关联性和模式。
完成这些预处理步骤后,数据就准备好了供机器学习模型进行训练和预测。预处理的质量直接影响到分析结果的可靠性。
接下来进行一个小小案例讲解:
- #1、
- #读取数据
- import pandas as pd
- data = pd.read_excel('学生信息表.xlsx')
- #查看属性缺失值情况
- data.info()
- data.isnull()
- #删除“籍贯”为空的行
- data = data.dropna(subset=["籍贯"])
- #使用平均年龄填充“年龄”属性为空的数据
- data['年龄'].fillna(data['年龄'].mean(),inplace=True)
- #使用性别的众数填充“性别”属性为空的列
- data.fillna({'性别':data['性别'].mode()[0]},inplace=True)
- #2、
- #将“性别”属性设置为哑变量,删除“性别_女”,并将“性别_男”改为“性别”
- data = pd.get_dummies(data,columns=['性别'])
- data = data.drop(columns = '性别_女')
- data = data.rename(columns={'性别_男':'性别'})
- #对“籍贯”属性进行编号处理
- from sklearn.preprocessing import LabelEncoder
- le = LabelEncoder()
- label = le.fit_transform(data['籍贯'])
- data['籍贯'] = label
- #3、
- #箱线图观察“年龄”属性有无异常值
- data.boxplot(column ='年龄' )
- #对异常值进行标注,标注在out1属性中
- import numpy as np
- data['out1'] = np.where(data['年龄'] < 30,0,1)
- #使用2倍标准差法标注异常值,标注在out2属性中
- data['out2'] = abs((data['年龄']-data['年龄'].mean())/data['年龄'].std()) > 2
- #4、
- #生成数据
- data2 = pd.DataFrame({'酒精含量(%)': [50, 60, 40, 80, 90], '苹果酸含量(%)': [2, 1, 1, 3, 2]})
- print(data2)
- #对各列进行z-score标准化
- from sklearn.preprocessing import StandardScaler
- data2_new1 = StandardScaler().fit_transform(data2)
- print(data2_new1)
- #对各列进行min-max标准化
- from sklearn.preprocessing import MinMaxScaler
- data2_new2 = MinMaxScaler().fit_transform(data2)
- print(data2_new2)
- #5、
- #生成多项式特征
- from sklearn.preprocessing import PolynomialFeatures
- data3 = np.array([[2,3],[2,4]])
- print(data3)
- pf1=PolynomialFeatures(degree=2)
- print(pf1.fit_transform(data3))
- pf2=PolynomialFeatures(degree=2,include_bias=False)
- print(pf2.fit_transform(data3))
- pf3=PolynomialFeatures(degree=2,include_bias=False,interaction_only=True)
- print(pf3.fit_transform(data3))
pf1:
pf2:
pf3:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。