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

 更新时间:2019年10月31日 14:48:44   作者:竹子莱西  
这篇文章主要介绍了python3常用的数据清洗方法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

首先载入各种包:

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')

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

这里写图片描述 

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

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

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

这里写图片描述

这里写图片描述

#列级别的判断,但凡某一列有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)

这里写图片描述

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

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

这里写图片描述

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

这里写图片描述

#统计重复记录数
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])

这里写图片描述

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

这里写图片描述 

对于连续型部分:

#对于连续型数据的大概统计:
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

这里写图片描述

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

这里写图片描述 

看变量之间的相关性:

data_cleaned.corr()

这里写图片描述

#以下是相关性的热力图,方便肉眼看
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)

这里写图片描述

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

#取出与某个变量(这里指能力)相关性最大的前四个,做出热点图表示
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 vtk读取并显示dicom文件示例

    Python vtk读取并显示dicom文件示例

    今天小编就为大家分享一篇Python vtk读取并显示dicom文件示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python使用openpyxl复制整张sheet

    Python使用openpyxl复制整张sheet

    这篇文章主要介绍了Python使用openpyxl复制整张sheet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python杀死一个线程的方法

    python杀死一个线程的方法

    由于python线程没有提供abort方法,所以我们需要自己想办法解决此问题,面对这一问题,小编帮大家解决phthon杀死一个线程的方法,需要的朋友一起来学习吧
    2015-09-09
  • 深入了解python装饰器

    深入了解python装饰器

    这篇文章主要介绍了解python装饰器,装饰器定义一个为其他函数添加功能的函数,装饰器就是在不修改装饰对象源代码以及调用方式的前提下,为装饰对象添加新功能,下面和小编一起进入文章内容了解更多知识,需要的朋友可以参考一下
    2022-03-03
  • Httprunner简介、安装及基本使用教程

    Httprunner简介、安装及基本使用教程

    httprunner是一款面向 HTTP(S) 协议的通用测试框架。只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求,本文给大家介绍Httprunner安装使用教程,感兴趣的朋友一起看看吧
    2022-02-02
  • 更新修改后的Python模块方法

    更新修改后的Python模块方法

    在本篇内容中我们给大家整理了关于如何更新修改后的Python模块的具体步骤和方法,有兴趣的朋友们学习下。
    2019-03-03
  • TensorFlow2基本操作之 张量排序 填充与复制 查找与替换

    TensorFlow2基本操作之 张量排序 填充与复制 查找与替换

    这篇文章主要介绍了TensorFlow2基本操作之 张量排序 填充与复制 查找与替换,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python小程序编程实现一键自动整理文件解压文件

    Python小程序编程实现一键自动整理文件解压文件

    这篇文章主要为大家介绍了Python小程序编程实现一键自动整理文件解压文件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Dockerfile构建一个Python Flask 镜像

    Dockerfile构建一个Python Flask 镜像

    这篇文章主要介绍了Dockerfile构建一个Python Flask 镜像,对正在学习的你有一定的参考价值,需要的小伙伴可以参考一下
    2022-01-01
  • Python中typing模块的具体使用

    Python中typing模块的具体使用

    本文主要介绍了Python中typing模块的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05

最新评论