博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据清洗
阅读量:5244 次
发布时间:2019-06-14

本文共 2589 字,大约阅读时间需要 8 分钟。

目录

一.预处理

二.缺失值的处理

三.格式的转换

四.异常值的处理


 

一.预处理

1.1.列名称的修改

像下面这样,我们就完成了两个列的重命名,而其余的列名保持不变

data = data.rename(columns = {
'holiday':'holid','weather':'weath'})

 1.2.添加index

有的时候数据的index是0,1,2……这样的数字,我们需要修改为日期格式,date必须是数据里一个series,如下代码可以添加

data=data.set_index('date')

1.3.去除不必要的字符

data.columns=map(lambda x: x.replace('-',''),data.columns)

1.4 数据的整体描述

data.descirbe()

 

二.缺失值的处理

查看缺失值:

data.info()

汇总缺失值:

data.isnull().sum()

缺失值处理方法:

1.直接删除----适合缺失值数量较小,并且是随机出现的,删除它们对整体数据影响不大的情况

2.使用均值、中位数或中位数代替----优点:不会减少样本信息,处理简单。缺点:当缺失数据不是随机数据时会产生偏差.对于正常分布的数据可以使用均值代替,如果数据是倾斜的,使用中位数可能更好。

3.插补法

  1)随机插补法----从总体中随机抽取某个样本代替缺失样本
  2)多重插补法----通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理
  3)热卡插补----指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。
    优点:简单易行,准去率较高
    缺点:变量数量较多时,通常很难找到与需要插补样本完全相同的样本。但我们可以按照某些变量将数据分层,在层中对缺失值实用均值插补
  4)拉格朗日差值法和牛顿插值法
  5)近邻插补
5.建模法
可以用回归、使用贝叶斯形式化方法的基于推理的工具或决策树归纳确定。例如,利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值。
 
pandas中的方法:
#过滤缺失值data[data.notnull()]#删除缺失行data.dropna(how='all')#删除缺失列data.dropna(how='all',axis=1)

缺失值的简单填充:

#用 0填充data.fillna(0)#也可以传入均值、众数、中位数data.fillna(data.mean()) #顺序填充,次此方法填充的缺失值 是非缺失值的最后一个的重复 data.fillna(method='ffill')

以上只是简单的处理,实际运用中应该是根据数据的需要选择合适的方法。

三.格式的转换

3.1.去处重复值

#create datadata= pd.DataFrame({
'k1': ['one'] * 3 + ['two']+['three']*3, 'k2': [1, 1, 2, 3, 3, 4, 4]})data k1 k20 one 11 one 12 one 23 two 34 three 35 three 46 three 4#DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行data.duplicated()0 False1 True2 False3 False4 False5 False6 Truedtype: bool#drop_duplicates方法用于返回一个移除了重复行的DataFramedata.drop_duplicates()k1 k20 one 12 one 23 two 34 three 35 three 4​#按某一列过滤重复值data.drop_duplicates(['k1'])

3.2.时间格式

时间格式的转化比较复杂,比较简单的一个就是利用pd.to_datetime

#转化index格式data.index=pd.to_datetime(data.index)

3.3文本格式的去除空格

with open('abc.txt') as f:    ix=0    while 1:        line = file.readline().strip()        if not line:            break            i+=1            line1 = line.replace('\r','')            f1 = open('newfile.txt','a')            f1.write(line1 + '\n')            f1.close()            f.close()

  

四.异常值的处理

异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值。

1)3σ原则

3σ探测方法的思想其实就是来源于切比雪夫不等式。一般是把超过三个离散值的数据称之为异常值。

一般所有数据中,至少有3/4(或75%)的数据位于平均数2个标准差范围内。

所有数据中,至少有8/9(或88.9%)的数据位于平均数3个标准差范围内。

所有数据中,至少有24/25(或96%)的数据位于平均数5个标准差范围内。

2)箱型图

把数据按照从小到大排序,其中25%为上四分位用FL表示,75%处为下四分位用FU表示。

计算展布为:

上截断点为:

下截断点为:

小于下截断点或大于上截断点的值,则被称为异常值

3)散点图

 

简单直观。

还有许多其他的方法,基于密度,基于距离,基于模型等等。

 

 

转载于:https://www.cnblogs.com/jin-liang/p/9465705.html

你可能感兴趣的文章
[实践]使用JarJar优雅的发布依赖包
查看>>
[置顶] 三五杆枪,可干革命,三五个人,可以创业
查看>>
getElementByName()和getElementById的区别
查看>>
存储过程转账
查看>>
C#中 从本地DataTable中 查询符合条件的数据
查看>>
音乐之声
查看>>
ppt点击文字出现图片,再次点击消失
查看>>
【转】Eclipse 常用快捷键 (动画讲解)
查看>>
Centos7配置ThinkPHP5.0完整过程(一)
查看>>
修改C#mvc的默认首页
查看>>
禅道Bug管理工具环境搭建
查看>>
浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
查看>>
Metaprogramming in Ruby: It’s All About the Self
查看>>
UESTC 电子科大专题训练 数论 E
查看>>
ubantu系统出现登录界面死循环处理办法
查看>>
maven install 跳过测试
查看>>
最大长方形 (Maximum Submatrix & Largest Rectangle)(涵盖各种求最大矩形题目)
查看>>
Java for LeetCode 103 Binary Tree Zigzag Level Order Traversal
查看>>
并查集&线段树&树状数组&排序二叉树
查看>>
Python之路【第四篇】:Python基础之函数
查看>>