首页 > 其他分享 >数模国赛冲刺 | 数据预处理方法合集(数据清洗、数据变换与数据编码)

数模国赛冲刺 | 数据预处理方法合集(数据清洗、数据变换与数据编码)

时间:2024-08-26 14:23:33浏览次数:9  
标签:数据编码 编码 df data 数模 print import 数据

​数据预处理方法合集(数据清洗、数据变换与数据编码)

数据预处理是数据科学和机器学习项目成功的基础步骤。通过适当的数据预处理,可以确保数据的质量、提升模型的性能,并为后续的建模和分析打下坚实的基础。忽视数据预处理可能导致模型训练失败或性能不佳,甚至得出错误的结论。因此,数据预处理在数据驱动的项目中是不可或缺的步骤,接下来我们将详细地介绍具体的方法,文末可获得全文PDF

目录

数据清洗

缺失值处理

异常值处理

重复数据处理

数据变换

标准化(Normalization)

归一化(Standardization)

对数变换(Logarithmic Transformation)

Box-Cox变换

Yeo-Johnson变换

分位数变换(Quantile Transformation)

数据编码

标签编码(Label Encoding)

独热编码(One-Hot Encoding)

二值化(Binarization)

频数编码(Frequency Encoding)

目标编码(Target Encoding)

哈希编码(Hash Encoding)

分箱编码(Bin Encoding)


数据预处理的必要性

1. 显著提高模型的准确性

通过清洗数据,去除噪声、异常值和处理缺失数据,模型可以更准确地捕捉数据中的真实模式,避免被异常或不完整的数据误导。此外,通过特征缩放(如标准化和归一化),可以使特征之间在模型中具有相同的重要性,特别是在使用基于距离的算法时,特征缩放尤为关键。

2. 提高模型的训练速度和效率

通过特征选择和特征提取,减少数据集的维度,可以大幅降低模型的复杂性和计算时间。这不仅节省了计算资源,还能使模型在面对大规模数据集时表现更好。

3. 改善模型的泛化能力

通过消除数据中的偏差和偏态,模型可以更好地适应新数据,从而提高预测的稳定性。特征工程中的特征生成和选择可以挖掘出数据中隐含的重要信息,使模型在不同的场景中具有更强的泛化能力。

4.确保数据的完整性和一致性

处理缺失值、重复数据和不一致的数据格式,可以防止模型因数据质量问题而产生偏差或错误。对于需要满足特定假设的模型(如正态分布假设),数据预处理可以调整数据使其符合这些假设,从而提高模型的可靠性。

5.增强模型的可解释性和鲁棒性

通过特征选择去除无关或冗余特征,模型的结果更加简洁明了,决策过程更易于理解。同时,处理异常值和噪声数据,可以使模型在面对极端情况时更加稳定,不容易受到意外的干扰。

数据清洗

缺失值处理

1) 删除含有缺失值的行或列

删除含有缺失值的数据行或列,适用于当缺失值比例较低或缺失值随机分布时。这样可以避免缺失值对分析或建模的影响。

import pandas as pd
# 创建一个示例DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, None, 8],
        'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)

# 删除含有缺失值的行
df_cleaned_rows = df.dropna()
print("删除含有缺失值的行:")
print(df_cleaned_rows)

# 删除含有缺失值的列
df_cleaned_cols = df.dropna(axis=1)
print("\n删除含有缺失值的列:")
print(df_cleaned_cols)
2) 用均值/中位数/众数填充缺失值

用样本的均值、中位数或众数填充缺失值,适用于连续变量或分类变量,能够减少数据的偏差。 当缺失值比例适中,且数据接近正态分布时,使用均值或中位数填充可以保持数据分布的特性。

# 用均值填充缺失值
df_filled_mean = df.fillna(df.mean())
print("用均值填充缺失值:")
print(df_filled_mean)

# 用中位数填充缺失值
df_filled_median = df.fillna(df.median())
print("\n用中位数填充缺失值:")
print(df_filled_median)

# 用众数填充缺失值
df_filled_mode = df.fillna(df.mode().iloc[0])
print("\n用众数填充缺失值:")
print(df_filled_mode)
3) 插值法(线性插值、样条插值等)

使用相邻数据点的趋势对缺失值进行插值,适用于时间序列数据或连续数据,能够较好地保持数据的趋势和变化。

# 线性插值填充缺失值
df_interpolated_linear = df.interpolate(method='linear')
print("线性插值填充缺失值:")
print(df_interpolated_linear)

# 样条插值填充缺失值
df_interpolated_spline = df.interpolate(method='spline', order=2)
print("\n样条插值填充缺失值:")
print(df_interpolated_spline)
4) 使用KNN、MICE等算法填补缺失值

使用机器学习算法或统计方法根据其他特征填补缺失值,能够充分利用数据之间的相关性。适用于复杂数据集、特征间存在较强相关性的场景。

  • • KNN:使用K个最近邻的数据的加权平均值或众数填充。

import pandas as pdy
from sklearn.impute import KNNImputer

# 创建一个示例DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, None, 8],
        'C': [9, 10, 11, 12]}

df = pd.DataFrame(data)

# 使用KNN算法填补缺失值
imputer = KNNImputer(n_neighbors=2)  # 设置邻居数为2
df_filled_knn = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)

print("使用KNN算法填补缺失值后的数据:")
print(df_filled_knn)
  • • MICE(多重插补):基于多重插补方法,利用其他特征估计缺失值。

import pandas as pd
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

# 创建一个示例DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, None, 8],
        'C': [9, 10, 11, 12]}

df = pd.DataFrame(data)

# 使用MICE算法填补缺失值
imputer = IterativeImputer(max_iter=10, random_state=0)  # 迭代次数设置为10
df_filled_mice = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)

print("使用MICE算法填补缺失值后的数据:")
print(df_filled_mice)

异常值处理

1) 使用3σ法则识别和处理异常值

正态分布下的异常值检测:数据在均值

标签:数据编码,编码,df,data,数模,print,import,数据
From: https://blog.csdn.net/EasyMCM/article/details/141534455

相关文章

  • 网站提示500.19 服务器错误:该文件的数据在配置数据库中配置不正确怎么办
    当网站提示 500.19InternalServerError 并指出“该文件的数据在配置数据库中配置不正确”时,这通常意味着IIS(InternetInformationServices)服务器上的配置文件(如 web.config)存在问题。这类错误通常与配置文件的格式、权限或内容有关。以下是解决 500.19InternalServ......
  • 数据分析~2
    excel数据备份-隐藏看数据量级筛选ctrl+alt+LGMV-商品交易总额(包含未支付订单)UV-人(去重)与PV-点击量等CPC-每产生一次点击的成本数据透视表:添加新字段切片器(跟表联动的)或者筛选器数据透视图:组合图函数学习:sum函数视图进行分屏全部求和=SUM(......
  • AIGC时代,如何为“数据飞轮”提速
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 企业通过数智化转型实现降本增效,已经成为行业共识。而随着AIGC时代到来,企业的创新能力和决策效率带来大幅度提升,对数智化转型也带来积极影响。 在数智化领域,火山引擎已在走在前列。基......
  • 在使用FastAPI处理数据输入的时候,对模型数据和路径参数的一些转换处理
    在开发Python的后端API平台的时候,为了兼容我SqlSugar开发的一些Winform端、BS端、UniApp端、WPF端等接入,由于部分是基于.net的处理,因此可能对于接入对象的属性为常见的Camel的驼峰命名规则,但是Python一般约定属性名称为小写,因此需要对这个模型进行兼容;另外默认FastAPI路由路径也是......
  • 利用python连接MySQL数据库
    利用python连接MySQL数据库1、准备工作:(1)事先在系统中已经安装好mysql数据库(2)在系统控制台通过pipinstallpymysql,安装python的第三方数据库模块2、利用python连接数据库#导入模块importpymysql#连接数据库conn=pymysql.connect(host="127.0.0.1",user="root",pas......
  • 《数据资产管理核心技术与应用》读书笔记-第五章:数据服务(二)
    《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与......
  • 常见问题解决 --- 如何给一个不支持配置代理的程序抓取https流量数据
    比如我有一个C#编写票务系统,它内嵌浏览器功能,我想抓取它的流量,但是这个客户端不支持配置代理设置解决办法:1.安装配置proxifier开启全局代理服务。安装好后网上有激活码激活一下,点击profile-proxyserver,添加一个代理服务器127.0.0.1,端口8080,协议https。点击profile-prox......
  • 在 SQLAlchemy 中实现数据处理的时候,实现表自引用、多对多、联合查询,有序id等常见的一
    有时候,我们在使用SQLAlchemy操作某些表的时候,需要使用外键关系来实现一对多或者多对多的关系引用,以及对多表的联合查询,有序列的uuid值或者自增id值,字符串的分拆等常见处理操作。1、在SQLAlchemy中定义具有嵌套children关系的表要在SQLAlchemy中定义具有嵌套children关系......
  • 告别数据泄露风险,一键申请免费SSL证书,安全升级
    在数字化时代,网站已成为企业展示形象、提供服务、促进交易的重要窗口。然而,随着网络攻击手段的不断升级,数据泄露风险也日益加剧,给企业和用户带来了严重的安全威胁。为了守护这份来之不易的数字资产,免费SSL证书应运而生,成为网站安全升级的重要利器。什么是SSL证书?SSL(SecureSo......
  • S4 供应商主数据扩建公司代码,采购组织数据(CVI_EI_INBOUND_MAIN)
    参考:https://blog.csdn.net/DeveloperMrMeng/article/details/131331147以模板数据为基础直接扩充对应的公司代码和采购组织数据: reportZED1_TEST1.tables:sscrfields.data:gt_uploadtypealsmex_tablineoccurs0withheaderline.field-symbols:<fs_upload>likeli......