数据预处理 #数据挖掘 #python

数据分析中的预处理步骤是数据分析流程中的重要环节,它的目的是清洗、转换和整理原始数据,以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤:

  1. 数据收集:确定数据来源,可能是数据库、文件、API或网络抓取,确保数据的质量和完整性。

  2. 数据清洗(Data Cleaning)

    • 缺失值处理:填充、删除或估算缺失的数据。
    • 异常值检测:识别并可能修复或排除不合理的数值。
    • 重复值检查:删除重复记录,保持数据唯一性。
    • 数据类型转换:将数据调整为正确的格式,如日期时间格式化、数值类型等。
  3. 数据集成(Data Integration):如果数据来自多个源,需要合并和统一数据格式。

  4. 数据转换(Data Transformation)

    • 标准化或归一化:使数据具有可比性,例如Z-score标准化或Min-Max缩放。
    • 编码分类变量:如One-Hot Encoding或Label Encoding。
    • 特征工程:创建新的特征,比如从文本中提取关键词或计算衍生指标。
  5. 数据降维(Dimensionality Reduction):如果数据维度过高,可能使用PCA(主成分分析)或LDA(潜在狄利克雷分配)等方法减少冗余。

  6. 数据划分(Data Splitting):将数据集分为训练集、验证集和测试集,用于模型的训练和评估。

  7. 数据采样(Sampling):对于大规模数据,可能需要进行随机抽样或分层抽样以平衡类别分布。

  8. 数据可视化(Exploratory Data Analysis, EDA):初步了解数据的分布、关联性和模式。

完成这些预处理步骤后,数据就准备好了供机器学习模型进行训练和预测。预处理的质量直接影响到分析结果的可靠性。


接下来进行一个小小案例讲解:

  • 1、缺失值处理
#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)
  • (1)读取“学生信息表.xlsx”。
  • (2)使用info()方法查看每一属性的缺失值情况。
  • (3)删除“籍贯”属性为空的行。
  • (4)使用平均年龄填充“年龄”属性为空的数据。
  • (5)使用性别的众数填充“性别”属性为空的列。
  • 2、非数值数据处理
  • #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
  • (1)将“性别”属性设置为哑变量,删除“性别_女”,并将“性别_男”改为“性别”。
  • (1为性别男,0为性别女)
  • (2)对“籍贯”属性进行编号处理。
  • (0为云南;1为江苏;2为浙江;3为湖北)
  • 3、异常值的处理
  • #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
  • (1)箱线图观察“年龄”属性有无异常值;
  • (2)对异常值进行标注,标注在out1属性中;
  • (3)使用2倍标准差法标注异常值,标注在out2属性中。
  • 4、数据标准化
  • #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)
  • 如下数据:
  • (1)对以上数据的各列进行z-score标准化;
  • (2)对以上数据的各列进行min-max标准化。
  • 5、生成多项式特征
  • #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))
    
  • 现在有(a,b)两个特征,生成二次多项式则为(1,a, b , ab, a^2, b^2),并用以下数据做测试:data3:

pf1:

pf2:

pf3:

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据挖掘是从大量数据中提取有用信息的过程,而数据预处理数据挖掘的重要步骤之一,它包括数据清洗、数据集成、数据变换和数据规约等操作。Python是一种常用的编程语言,也有很多用于数据挖掘数据预处理的库和工具。 在Python中,有一些常用的库可以用于数据挖掘数据预处理,例如: 1. NumPy:用于进行数值计算和数组操作,可以处理大规模的数据集。 2. Pandas:提供了高效的数据结构和数据分析工具,可以进行数据清洗、转换和整合等操作。 3. Scikit-learn:是一个机器学习库,提供了各种常用的数据挖掘算法和工具,包括数据预处理方法。 4. Matplotlib和Seaborn:用于数据可视化,可以绘制各种图表和图形,帮助理解和分析数据。 在进行数据预处理时,常见的操作包括: 1. 数据清洗:处理缺失值、异常值和重复值等问题。 2. 数据集成:将多个数据源合并为一个整体,解决数据冗余和不一致性问题。 3. 数据变换:对数据进行转换,例如标准化、归一化、离散化等。 4. 数据规约:降低数据维度,减少数据存储和计算的复杂性。 以下是一些常用的Python代码示例,用于数据预处理: 1. 使用Pandas读取和处理数据: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv(&#39;data.csv&#39;) # 处理缺失值,使用均值填充 data.fillna(data.mean(), inplace=True) # 处理重复值 data.drop_duplicates(inplace=True) # 数据转换,标准化 data[&#39;feature&#39;] = (data[&#39;feature&#39;] - data[&#39;feature&#39;].mean()) / data[&#39;feature&#39;].std() # 数据规约,PCA降维 from sklearn.decomposition import PCA pca = PCA(n_components=2) data_reduced = pca.fit_transform(data) ``` 2. 使用Scikit-learn进行数据预处理: ```python from sklearn.preprocessing import Imputer, StandardScaler from sklearn.decomposition import PCA # 处理缺失值,使用均值填充 imputer = Imputer(strategy=&#39;mean&#39;) data_imputed = imputer.fit_transform(data) # 数据转换,标准化 scaler = StandardScaler() data_scaled = scaler.fit_transform(data_imputed) # 数据规约,PCA降维 pca = PCA(n_components=2) data_reduced = pca.fit_transform(data_scaled) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎曼最初的梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值