python3常用的数据清洗方法(小结)


Posted in Python onOctober 31, 2019

首先载入各种包:

import pandas as pd
import numpy as np
from collections import Counter
from sklearn import preprocessing
from matplotlib import pyplot as plt
%matplotlib inline
import seaborn as sns 
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei') # 解决Seaborn中文显示问题

读入数据:这里数据是编造的

data=pd.read_excel('dummy.xlsx')

本案例的真实数据是这样的:

python3常用的数据清洗方法(小结) 

对数据进行多方位的查看:

实际情况中可能会有很多行,一般用head()看数据基本情况

data.head() #查看长啥样
data.shape #查看数据的行列大小
data.describe()

python3常用的数据清洗方法(小结)

python3常用的数据清洗方法(小结)

#列级别的判断,但凡某一列有null值或空的,则为真
data.isnull().any()

#将列中为空或者null的个数统计出来,并将缺失值最多的排前
total = data.isnull().sum().sort_values(ascending=False)
print(total)


#输出百分比:
percent =(data.isnull().sum()/data.isnull().count()).sort_values(ascending=False)
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
missing_data.head(20)

python3常用的数据清洗方法(小结)

也可以从视觉上直观查看缺失值:

import missingno
missingno.matrix(data)
data=data.dropna(thresh=data.shape[0]*0.5,axis=1) #至少有一半以上是非空的列筛选出来
#如果某一行全部都是na才删除:
data.dropna(axis=0,how='all')

python3常用的数据清洗方法(小结)

#默认情况下是只保留没有空值的行
data=data.dropna(axis=0)

python3常用的数据清洗方法(小结)

#统计重复记录数
data.duplicated().sum()
data.drop_duplicates()

对连续型数据和离散型数据分开处理:

data.columns
#第一步,将整个data的连续型字段和离散型字段进行归类
id_col=['姓名']
cat_col=['学历','学校'] #这里是离散型无序,如果有序,请参考map用法,一些博客上有写
cont_col=['成绩','能力'] #这里是数值型
print (data[cat_col]) #这里是离散型的数据部分
print (data[cont_col])#这里是连续性数据部分

对于离散型部分:

#计算出现的频次
for i in cat_col:
  print (pd.Series(data[i]).value_counts())
  plt.plot(data[i])

python3常用的数据清洗方法(小结)

#对于离散型数据,对其获取哑变量
dummies=pd.get_dummies(data[cat_col])
dummies

python3常用的数据清洗方法(小结) 

对于连续型部分:

#对于连续型数据的大概统计:
data[cont_col].describe()

#对于连续型数据,看偏度,一般大于0.75的数值做一个log转化,使之尽量符合正态分布,因为很多模型的假设数据是服从正态分布的
skewed_feats = data[cont_col].apply(lambda x: (x.dropna()).skew() )#compute skewness
skewed_feats = skewed_feats[skewed_feats > 0.75]
skewed_feats = skewed_feats.index
data[skewed_feats] = np.log1p(data[skewed_feats])
skewed_feats
#对于连续型数据,对其进行标准化
scaled=preprocessing.scale(data[cont_col])
scaled=pd.DataFrame(scaled,columns=cont_col)
scaled

python3常用的数据清洗方法(小结)

m=dummies.join(scaled)
data_cleaned=data[id_col].join(m)
data_cleaned

python3常用的数据清洗方法(小结) 

看变量之间的相关性:

data_cleaned.corr()

python3常用的数据清洗方法(小结)

#以下是相关性的热力图,方便肉眼看
def corr_heat(df):
  dfData = abs(df.corr())
  plt.subplots(figsize=(9, 9)) # 设置画面大小
  sns.heatmap(dfData, annot=True, vmax=1, square=True, cmap="Blues")
  # plt.savefig('./BluesStateRelation.png')
  plt.show()
corr_heat(data_cleaned)

python3常用的数据清洗方法(小结)

如果有觉得相关性偏高的视情况删减某些变量。

#取出与某个变量(这里指能力)相关性最大的前四个,做出热点图表示
k = 4 #number of variables for heatmap
cols = corrmat.nlargest(k, '能力')['能力'].index
cm = np.corrcoef(data_cleaned[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f',   annot_kws={'size': 10}, yticklabels=cols.values,  xticklabels=cols.values)
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
Python找出最小的K个数实例代码
Jan 04 Python
python的Tqdm模块的使用
Jan 10 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
基于python3实现socket文件传输和校验
Jul 28 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
python 导入数据及作图的实现
Dec 03 Python
python随机模块random使用方法详解
Feb 14 Python
python自动下载图片的方法示例
Mar 25 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
Python必须了解的35个关键词
Jul 16 Python
python opencv肤色检测的实现示例
Dec 21 Python
Django实现网页分页功能
Oct 31 #Python
8段用于数据清洗Python代码(小结)
Oct 31 #Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 #Python
python实现大量图片重命名
Mar 23 #Python
python3图片文件批量重命名处理
Oct 31 #Python
Django1.11自带分页器paginator的使用方法
Oct 31 #Python
python实现批量文件重命名
Oct 31 #Python
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Vue2几种常见开局方式详解
2017/09/09 Javascript
vue如何判断dom的class
2018/04/26 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
vxe-table vue table 表格组件功能
2019/05/26 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
接待员岗位责任制
2014/02/10 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
海洋天堂观后感
2015/06/05 职场文书
贷款工资证明范本
2015/06/12 职场文书
中学总务处工作总结
2015/08/12 职场文书
Python数据类型最全知识总结
2021/05/31 Python
redis lua限流算法实现示例
2022/07/15 Redis