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的即时标记项目练习笔记
Sep 18 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
Python中字典的setdefault()方法教程
Feb 07 Python
用matplotlib画等高线图详解
Dec 14 Python
《Python学习手册》学习总结
Jan 17 Python
Python实现的求解最大公约数算法示例
May 03 Python
python实现txt文件格式转换为arff格式
May 31 Python
python使用插值法画出平滑曲线
Dec 15 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 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 allow_url_include的应用和解释
2010/04/22 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
网页常用特效代码整理
2006/06/23 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
jquery 使用简明教程
2014/03/05 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python自动化报告的输出用例详解
2018/05/30 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python框架中flask知识点总结
2018/08/17 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python命令 -u参数用法解析
2019/10/24 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
学生自我评价范文
2014/02/02 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
担保书范文
2015/01/20 职场文书
三行辞职书范文
2015/02/26 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书