刚入坑的小白可以看一下,大佬勿喷,我也是小白,白的不能再白的那种,所以吧,我把我入坑时候大量搜索的代码,没日没夜调试的代码,能用的以及自己写的代码,给各位汇总,会以每篇文章的形式进行更新,所以各位记得点赞,关注,收藏!(要不然就找不到我了!)

问题一:什么是数据预处理?

答:数据预处理就是将大量的数据进行整齐话,对数据进行清洗,把没用的,或者是异常的(就是坏的)剔除掉,剔除掉呢就是删掉他就行了,然后空白值什么的进行删除就行了,就这么简单(在我建模的历程中没遇到过空白值,哈哈哈哈,看个人吧)

问题二:如何进行数据预处理?

答:数据预处理的方法主要包括去除唯一属性、处理缺失值、属性编码、数据标准化正则化、特征选择、主成分分析等。

一、去除唯一属性

就是简单的id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除就行了。

二、缺失值处理

(一)缺失值的分类

完全随机缺失:指的是数据的缺失是完全随机的;
随机缺失:指的是数据的缺失不是完全随机的,和完全变量有关;
完全不随机缺失:指的是数据的缺失与不完全变量自身的取值相关; 缺失值会使得系统丢失了大量的有用信息,系统所表现出来的不确定性更加显著,系统中蕴含的确定性成分更难把握,包含空值的不完全变量会使得挖掘过程陷入混乱。

(二)缺失值处理的三种方法

直接使用含有缺失值的特征;删除含有缺失值的特征(该方法在包含缺失值的属性含有大量缺失值而仅仅包含极少量有效值时是有效的);缺失值补全。
删除含有缺失值的特征:若变量的缺失率较高(大于80%),覆盖率较低,且重要性较低,可以直接将变量删除。
(1)均值插补。数据的属性分为定距型和非定距型。如果缺失值是定距型的,就以该属性存在值的平均值来插补缺失的值;如果缺失值是非定距型的,就根据统计学中的众数原理,用该属性的众数(即出现频率最高的值)来补齐缺失的值。
Ps : 定距型数据--数据的中间级,用数字表示个体在某个有序状态中所处的位置,不能做四则运算。例如,“受教育程度”,文盲半文盲=1,小学=2,初中=3,高中=4,大学=5,硕士研究生=6,博士及其以上=7。
(2)利用同类均值插补。同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。
(3)极大似然估计(Max Likelihood ,ML)。在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
(4)多重插补(Multiple Imputation,MI)。多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。
假设一组数据,包括三个变量Y1,Y2,Y3,它们的联合分布为正态分布,将这组数据处理成三组,A组保持原始数据,B组仅缺失Y3,C组缺失Y1和Y2。在多值插补时,对A组将不进行任何处理,对B组产生Y3的一组估计值(作Y3关于Y1,Y2的回归),对C组作产生Y1和Y2的一组成对估计值(作Y1,Y2关于Y3的回归)。
当用多值插补时,对A组将不进行处理,对B、C组将完整的样本随机抽取形成为m组(m为可选择的m组插补值),每组个案数只要能够有效估计参数就可以了。对存在缺失值的属性的分布作出估计,然后基于这m组观测值,对于这m组样本分别产生关于参数的m组估计值,给出相应的预测即,这时采用的估计方法为极大似然法,在计算机中具体的实现算法为期望最大化法(EM)。对B组估计出一组Y3的值,对C将利用 Y1,Y2,Y3它们的联合分布为正态分布这一前提,估计出一组(Y1,Y2)。
上例中假定了Y1,Y2,Y3的联合分布为正态分布。这个假设是人为的,但是已经通过验证(Graham和Schafer于1999),非正态联合分布的变量,在这个假定下仍然可以估计到很接近真实值的结果。
多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足。
1)贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据的理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。
2)贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。
以上四种插补方法,对于缺失值的类型为随机缺失的插补有很好的效果。两种均值插补方法是最容易实现的,也是以前人们经常使用的,但是它对样本存在极大的干扰,尤其是当插补后的值作为解释变量进行回归时,参数的估计值与真实值的偏差很大。相比较而言,极大似然估计和多重插补是两种比较好的插补方法,与多重插补对比,极大似然缺少不确定成分,所以越来越多的人倾向于使用多值插补方法。

(5)插值法填充

包括随机插值,多重差补法,热平台插补,拉格朗日插值,牛顿插值等

(6)模型填充

使用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。

上述内容参考知乎[酒仙美嘉雪]的《数据分析中缺失值的处理方法》,数据分析中缺失值的处理方法 - 知乎,以及CSDN[marsjhao]的《机器学习算法笔记之6:数据预处理》,https://blog.csdn.net/marsjhao/

上面部分节选的是机器学习(三):数据预处理--数据预处理的基本方法 - 知乎 (zhihu.com)

其实主要就是

  • 缺失值查找
  • 缺失值删除
  • 缺失值填充

就这三步骤

下面我们就要开始在我们python中进行了!我们先导入我们的库!

import pandas as pd
import numpy as np

这个呢就是pandas库的调用来读取我们的excel表格, numpy库呢就是对数组进行处理的,所以一般都是先调用到这两个库,as的意思就是类似于一个简写让后面调用库的时候简单话

好了我们来导入我们的数据

df =pd.read_excel(r'C:\Users\14927\Desktop\数据.xls',sheet_name = 'Sheet1')  #读取数据
#如果是cvs文件 read_cvs

这个sheet_name也可以不写他就是用来定位你的工作表单的如果你想定位在第二个表单 那就改预先相对应的名字就可以了,默认不写就是第一个表单,看下面的图吧

是吧很详细了吧,好啦,我们导入数据之后,我们先对空值进行检索,就是数据查找空值

df.info() 

就这一行代码就可以了 ,你也不用去理解他的原理,你就输入进去,运行就是了

如何跑出来结果

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 22 entries, 0 to 21
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   x       22 non-null     int64  
 1   y       21 non-null     float64
dtypes: float64(1), int64(1)
memory usage: 480.0 bytes

我把数据做成了这样大家看一下就可以了,好啦我们现在对我们的空值进行定位

df.isnull()

然后输入的结果

x      y
0   False  False
1   False  False
2   False  False
3   False  False
4   False  False
5   False  False
6   False  False
7   False  False
8   False  False
9   False  False
10  False  False
11  False   True
12  False  False
..........

后面我就不写了太长了,各位看到true就是我们的空值

对于这种值我们一般直接删除就行了,对数据影响不大

# 使用dropna(0)函数删除所有含Nan空值的行
df.dropna()

对于缺失的我们也可以用平均值等进行填充

#使用fillna函数填充空值
df.fillna(0)

这样填进去的就是0了

然后我们可以指定位置进行填充

#指定列用指定值填充
df.fillna({'y':'2022'})

这样就可以了

三、重复值的处理

一样重复上面的操作进行导入数据

然后

df.drop_duplicates()  #没有设置默认全列重复行的删除,有重复列需要进行设置

这里我就不上数据图了,各位有不懂的评论回复留言我吧,

然后我们根据定位列去除重复值

df.drop_duplicates(subset='你的列的索引')

四、异常值得检测与处理

就是不正常的数据喽,解决方法

  • 删除;
  • 用正常值替换;(replace函数)
  • 研究数据异常的原因;

replace函数

df1=df["列的索引"].replace("目标","替换内容")

这样基本就完成了哦!

然后总结运行,下面就是我们的总结代码啦!各位拿到数据可以直接运行就可以了!

交论文时候别交我这个哈,切记,切记,切记!

import pandas as pd#调用库df =pd.read_excel(r'C:\Users\14927\Desktop\数据.xls)  #读取数据
#如果是cvs文件 read_cvsprint(df.head(5))       #得到数据的前五行 进行判断print(df.info())       #得到数据整体的格式print(df.duplicated()) #查询重复值 此数据没有重复值print(df.isnull())  #查缺失值 此数据没有缺失值#此代码是建模前期数据预处理的代码
#有一些自己加一下吧,懂得都懂哈,哈哈哈哈哈,想要的留言评论我私发

【数学建模】python建模专用数据清洗代码(本人实践)相关推荐

  1. python数学实验与建模_Python数学

    python数学实验与建模 In this tutorial, we will learn about Python Math module and its functions. In the pre ...

  2. python机器学习案例-支持向量机建模及评估(完整代码+实现效果)

    实现功能: python机器学习案例-支持向量机建模及评估. 实现代码: # 导入需要的库 from warnings import simplefilter simplefilter(action= ...

  3. 数学建模python实现基础编程练习4

    数学建模python实现基础编程练习4 1.使用networkx实现最短路和最短距离 import networkx as nx list1 = [(1,2,7),(1,3,3),(1,4,12),( ...

  4. 数学建模python实现基础编程练习1

    数学建模python实现编程练习1 习题来自<python数学实验与建模> 1.利用sympy库进行画单叶双曲面 用pyplot画的不是很理想,就用sympy画了,利用plot3D函数 f ...

  5. 基于python命令流及代码的Plaxis自动化建模

    有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法.在使用各大软件进行数值模拟建模的过程中,您是否发现GUI界面中重复性的点击输入工作太 ...

  6. 基于python命令流及代码的Plaxis自动化建模与典型案例

    有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法.在使用各大软件进行数值模拟建模的过程中,您是否发现GUI界面中重复性的点击输入工作太 ...

  7. 《利用Python进行数据分析·第2版》第13章 Python建模库介绍

    第1章 准备工作 第2章 Python语法基础,IPython和Jupyter 第3章 Python的数据结构.函数和文件 第4章 NumPy基础:数组和矢量计算 第5章 pandas入门 第6章 数 ...

  8. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

  9. python股票交易模型_如何用Python建模GGM模型并对股票估值?

    内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 首先我们快速了解一下什么是GGM模型. GGM模型又叫做"戈登增长模 ...

  10. python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizer import csv fro ...

最新文章

  1. 找出两个字符串中最大子字符串,如abractyeyt,dgdsaeactyey的最大子串为actyet
  2. python项目归纳总结-这4个Python实战项目,让你瞬间读懂Python!
  3. 使用EditPlus 删除文本文件中多余的空行 和 EditPlus 选择列
  4. Ardino基础教程 16_一位数码管
  5. poj2955 Brackets 最大括号匹配 区间动态规划
  6. list.php tid= field,dedecms列表页模板中调用当前栏目文章数
  7. 轻量级前端MVVM框架avalon - 整体架构
  8. azure云数据库_Azure SQL数据库上的透明数据加密(TDE)
  9. UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】
  10. 机器人对话常用语模板_电话机器人的销售能力
  11. fastDFS原理及环境搭建
  12. windows保护无法启动修复服务器,win10系统使用“sfc /scannow”修复系统提示Windows资源保护无法启动修复服务怎么办...
  13. c++---constructor(ctor,构造函数)
  14. Apache Camel入门教程
  15. kd树搜索(k邻近法)
  16. 一个总是令人记不住的vectorvectorPoint
  17. 推荐多款免费的开源建站系统和内容管理系统
  18. 互联网诞生前,苏联最流行的11台个人电脑
  19. Amazon EKS 新功能上线——助你降低配置和管理复杂度
  20. stm32远程报警系统的实现

热门文章

  1. 【408考研计划】计算机组成原理
  2. 中国物联网激荡20年
  3. 怎么删除映射网络里的计算机,如何映射网络驱动器 删除映射网络驱动器的方法...
  4. OpenCV测试摄像头帧率
  5. VS2017 CUDA编程学习12:CUDA流
  6. Awesomium(一)-- WebSnapshot
  7. Python 最好用的8个VS Code扩展
  8. 专访数据挖掘领头人韩家炜教授:不要迷信权威,做学问要秉承「三个真实」...
  9. 如何免费下载付费音乐歌曲,6个网站+8个APP
  10. 上海富勒wms_国内WMS前三名是哪几家