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创建线程示例
May 06 Python
在Python中使用异步Socket编程性能测试
Jun 25 Python
Python中endswith()函数的基本使用
Apr 07 Python
python实现百度语音识别api
Apr 10 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
python for循环remove同一个list过程解析
Aug 14 Python
python内打印变量之%和f的实例
Feb 19 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
Python持续监听文件变化代码实例
Jul 22 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
python实现查询IP地址所在地
2015/03/29 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Django框架模板介绍
2019/01/15 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
python代码实现图书管理系统
2020/11/30 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
经贸专业毕业生求职信
2014/03/23 职场文书
应届生求职信范文
2014/06/30 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
教师先进个人材料
2014/12/17 职场文书
红色革命电影观后感
2015/06/18 职场文书
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python
索尼ICF-36收音机评测
2022/04/30 无线电