数据预处理主要包括数据清洗数据集成数据变换数据规约

数据清洗:删除原始数据集中的无关数据、重复数据、平滑噪声数据,处理缺失值、异常值等
①缺失值处理
删除记录、数据插补、不处理
常用插补方法

均值/中位数/众数 根据属性值类型,取均值、中位数、众数进行插补
使用固定值 将缺失属性用常量替代
最近邻插补法 在记录中找到与缺失样本最接近的样本的该属性值进行插补
回归方法 根据已有数据和与其有关的其他变量数据建立拟合模型来预测
插值法 建立合适的插值函数f(x),未知值计算得到。拉格让日插值法、牛顿插值法。

②异常值处理:异常值是否剔除看情况,因为有些异常值可能含有有用信息
常用异常值处理方法

删除记录 直接删除
视为缺失值 视为缺失值进行缺失值的处理
平均值修正 取前后两个正常值的平均
不处理 判断其原因,若无问题直接使用进行挖掘

数据集成:将多个数据源合并存在一个一致的数据存储中,要考虑实体识别问题和属性冗余问题,从而将数据在最低层上加以转换、提炼和集成
①实体识别:同名异义、异名同义、单位不统一
②冗余属性识别:多次出现、同属性不同名导致重复
数据变换:对数据规范化处理
①简单函数变换,如平方、开方、对数、差分运算
②规范化,也称归一化,消除量纲和取值范围的差异,进行标准化处理。映射到[-1,1]或[0,1]内。
[1]最小-最大规范化,也称离差标准化。x*=(x-min)/(max-min);缺点:异常值影响;之后的范围限制在[min,max]中
[2]零-均值规范化,也称标准差规范化,处理后[0,1]。x*=(x-mean)/std
[3]小数定标规范化,移动属性值小数位,映射到[-1,1]。x*=x/10^k
#-*- coding: utf-8 -*-
#数据规范化
import pandas as pd
import numpy as npdatafile = '../data/normalization_data.xls' #参数初始化
data = pd.read_excel(datafile, header = None) #读取数据print (data - data.min())/(data.max() - data.min()) #最小-最大规范化
print (data - data.mean())/data.std() #零-均值规范化
print data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化#output:
#          0         1         2         3
#0  0.074380  0.937291  0.923520  1.000000
#1  0.619835  0.000000  0.000000  0.850941
#2  0.214876  0.119565  0.813322  0.000000
#3  0.000000  1.000000  1.000000  0.563676
#4  1.000000  0.942308  0.996711  0.804149
#5  0.264463  0.838629  0.814967  0.909310
#6  0.636364  0.846990  0.786184  0.929571
#          0         1         2         3
#0 -0.905383  0.635863  0.464531  0.798149
#1  0.604678 -1.587675 -2.193167  0.369390
#2 -0.516428 -1.304030  0.147406 -2.078279
#3 -1.111301  0.784628  0.684625 -0.456906
#4  1.657146  0.647765  0.675159  0.234796
#5 -0.379150  0.401807  0.152139  0.537286
#6  0.650438  0.421642  0.069308  0.595564
#       0      1      2       3
#0  0.078  0.521  0.602  0.2863
#1  0.144 -0.600 -0.521  0.2245
#2  0.095 -0.457  0.468 -0.1283
#3  0.069  0.596  0.695  0.1054
#4  0.190  0.527  0.691  0.2051
#5  0.101  0.403  0.470  0.2487#

③连续属性离散化:分类算法需要离散形式,如ID3、Apriori等
离散化过程就是在取值范围内设立若干个离散花粉店,将取值范围划分为离散区间
等宽法、等频发、基于聚类分析方法
#-*- coding: utf-8 -*-
#数据规范化
import pandas as pddatafile = '../data/discretization_data.xls' #参数初始化
data = pd.read_excel(datafile) #读取数据
data = data[u'肝气郁结证型系数'].copy()
k = 4d1 = 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] #使用describe函数自动计算分位数
w[0] = w[0]*(1-1e-10)
d2 = pd.cut(data, w, labels = range(k))def cluster_plot(d, k): #自定义作图函数来显示聚类结果import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure(figsize = (8, 3))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 pltcluster_plot(d1, k).show()cluster_plot(d2, k).show()

④属性构造
#-*- coding: utf-8 -*-
#线损率属性构造
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) #保存结果

⑤小波变换:信号分析手段,小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用

#-*- coding: utf-8 -*-
#利用小波分析进行特征分析#参数初始化
inputfile= '../data/leleccum.mat' #提取自Matlab的信号文件from scipy.io import loadmat #mat是MATLAB专用格式,需要用loadmat读取它
mat = loadmat(inputfile)
signal = mat['leleccum'][0]import pywt #导入PyWavelets
coeffs = pywt.wavedec(signal, 'bior3.7', level = 5)
#返回结果为level+1个数字,第一个数组为逼近系数数组,后面的依次是细节系数数组
数据规约:产生更小且保持数据完整性的新数据集。意义在于降低无效、错误数据;降低存储成本;少量且具有代表性的数据大幅加快。
①属性规约:属性合并或删除无关维,目标是寻找最小子集使子集概率分布尽可能与原来相同
属性规约常用方法

合并属性 将就属性合并为新属性 {A1,A2,A3,B1,B2,C}——{A,B,C}
逐步向前选择 从空集开始,逐个加入最优属性,直到无最优或满足条件 {}—{A1}—{A1,A4}
逐步向后删除 从全集开始,每次删除最差属性,直到无最差或满足阈值
决策树归纳 利用决策树归纳能力进行分类,删除未出现的属性,即效果差的属性
主成分分析 用少量变量解释大部分变量,保留大部分信息,将相关性高的数据转为彼此独立

#-*- coding: utf-8 -*-
#主成分分析 降维
import pandas as pd#参数初始化
inputfile = '../data/principal_component.xls'
outputfile = '../tmp/dimention_reducted.xls' #降维后的数据data = pd.read_excel(inputfile, header = None) #读入数据from sklearn.decomposition import PCApca = PCA()
pca.fit(data)
pca.components_ #返回模型的各个特征向量
pca.explained_variance_ratio_ #返回各个成分各自的方差百分比

②数值规约:通过选择替代的、较小的数据来较少数据量,包括有参数(回归、对数线性模型)和无参数方法(直方图、聚类、抽样)
Python主要数据预处理函数

interpolate 一维、高维插值,如拉格朗日、样条插值等 Scipy
unique 去除重复 Pandas/Numpy
isnull 判断是否为空 Pandas
notnull 判断是否非空 Pandas
PCA 主成分分析 Scikit-Learn
random 生成随机矩阵 Numpy

《Python数据分析与挖掘实战》笔记(四):数据预处理相关推荐

  1. python数据分析与挖掘实战 配套资源_[课程学习]Python数据分析与挖掘实战 配套完整数据和源代码 rar文件[25.46MB]-码姐姐下载...

    该资源为<python数据分析与挖掘实战>一书的配套的资源代码,鉴于大多数读者很难找到此资源,特此分... 大小:20.99MB | 2020-05-14 19:07:04 本资源是pyt ...

  2. python数据分析与挖掘实战 之笔记2

    <python数据分析与挖掘实战>学习笔记2 经过前面章节的分析,即对数据进行探索和预处理,得到了处理后的数据.根据所得到的数据建立分类与预测.聚类分析.关联规则.时序模式.和偏差检测等模 ...

  3. 《Python数据分析与挖掘实战》一3.1 数据质量分析

    本节书摘来自华章出版社<Python数据分析与挖掘实战>一书中的第3章,第3.1节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区"华章计算机"公众号 ...

  4. 《Python数据分析与挖掘实战》Chapter8中医证型关联规则挖掘笔记

    最近在学习<Python数据分析与挖掘实战>中的案例,写写自己的心得. 代码分为两大部分:1.读取数据并进行聚类分析                                  2. ...

  5. 大数据培训课程分享:Python数据分析与挖掘实战课程介绍

    <Python数据分析与挖掘实战>课程内容以Python数据分析与挖掘的常用技术与真实案例相结合的方式,深入浅出地介绍Python数据分析与挖掘的重要内容,共分为基础篇(第1~5章)和实战 ...

  6. 《Python数据分析与挖掘实战》第14章——基于基站定位数据的商圈分析(层次聚类)

    本文是基于<Python数据分析与挖掘实战>的实战第14章<基于基站定位数据的商圈分析>做的分析. 1 挖掘背景及目标 从某通信运营商提供的特定接口解析得到用户的定位数据.利用 ...

  7. 《Python数据分析与挖掘实战》第15章 ——电商产品评论数据情感分析(LED)

    文章目录 1.挖掘背景与目标 2.2 数据探索与预处理 2.1 数据筛选 2.2 数据去重 2.3 删除前缀评分 2.4 jieba分词 3 基于LDA 模型的主题分析 4.权重 5.如何在主题空间比 ...

  8. Python数据分析与挖掘实战期末考复习(抱佛脚啦)

    期末三天赛高考我真的会谢,三天学完数据挖掘--真的很极限了的. 课本是那本绿色的Python数据分析与挖掘实战(第2版),作者张良均- 图片来自老师给的ppt,以下内容是我自己总结的,自己复习用,覆盖 ...

  9. 《Python数据分析与挖掘实战》第10章(下)——DNN2 筛选得“候选洗浴事件”3 构建模型

    本文是基于<Python数据分析与挖掘实战>的实战部分的第10章的数据--<家用电器用户行为分析与事件识别> 做的分析. 接着前一篇文章的内容,本篇博文重点是处理用水事件中的属 ...

  10. 《Python数据分析与挖掘实战》第12章(中)——协同推荐

    本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...

最新文章

  1. mysql 十万条 输出_MySQL一次性插入十万条数据
  2. 软件质量保证与测试笔记——江湖救急版
  3. 内核同步机制——互斥量
  4. 动态网页制作PHP常用的正则表达式
  5. POJ 1821 单调队列+dp
  6. MSBI常见问题总结
  7. 从几个角度谈谈内存的管理和划分
  8. 【TC10738】TheContest【Hall 定理】【贪心】【二分图匹配】
  9. Redis常见面试题详解
  10. 设计模式之GOF23建造者模式
  11. 【window】重启IIS服务
  12. 支持嵌入的手机号码识别sdk软件
  13. oracle sla 设置文档,Oracle EBS SLA 详解(转)
  14. 《现代密码学》学习笔记——第三章 分组密码 [三]分组密码的运行模式
  15. Django之开发微信小程序后端-会话管理篇③
  16. 区块链是如何解决慈善公益项目中存在的问题呢?
  17. 自学Java系列 笔记2 高级类特性1
  18. 20 October in ss
  19. AdvanCell完成由晨兴创投领投的1,800万澳元B轮融资
  20. 树 - (二叉查找树,红黑树,B树)- 红黑树

热门文章

  1. Goolge Site 被墙后
  2. 数商云:打通产销对接,构建新型数字化农副产品供应链
  3. 读书笔记:《理性的非理性:人人都需要的十堂营销心理课》
  4. 程序猿媳妇儿注意事项 (转载)
  5. 常见异常的原因分析和解决方法
  6. 【学习】数据聚合和分组运算【groupby】
  7. CF #80 Cthulhu
  8. 2022年“研究生科研素养提升”系列公益讲座在线测评题目与参考答案
  9. Symantec Liveupdate Administrator的搭建
  10. 系统自己弹出诸如 kernel:NMI watchdog: BUG: soft lockup - CPU#2 stuck for 26s [mysqld:2875]