python数据清理的实践总结_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()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转转钓鱼php,最新转转钓鱼源码程序网站微信:mm88wk 最新转转源码 - 下载 - 搜珍网...

压缩包 : 转转钓鱼源码微:mm88wk.zip 列表转转/转转/360safe/转转/360safe/360webscan.php转转/360safe/webscan_cache.php转转/admin/转转/admin/add.php转转/admin/addsite.php转转/admin/adduser.php转转/admin/downfile.php转转/admin/download.php转转/admin/e…

PHP即将退出,PHP4即将退出历史舞台

http://www.phpeye.com/bbs/viewthread.php?tid92 PHP官方团队在php.net上发布了一则公告: Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stablehttp://w…

redis 清空db下_PHP操作redis实现的分页列表

正文内容封装类文件如下:/* * redis 分页数据类库 */class redisPage{protected $_redis;protected $_redis_ip 127.0.0.1; //ipprotected $_redis_port 6379; //端口protected $_redis_db 0; //数据库号protected $_hash_prefix my_data; //前缀名称public fun…

php5.1.4,apache 2.2.2 + PHP5.1.4 不能运行的解_php

apache 2.2.2 php5.1.4 不能运行的解决办法.问题,使用传统的模块化方法安装PHP5.1.* apache 2.2.2 后不能启动,提示:"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."原因:PHP压缩包里的php5apache2.dll只适用于apach…

python3中的zip_Python3实现将文件归档到zip文件及从zip文件中读取数据的方法

Created on Dec 24, 2012将文件归档到zip文件,并从zip文件中读取数据author: liury_lab# 压缩成zip文件from zipfile import * #UnusedWildImportimport osmy_dir d:/中华十大名帖/myzip ZipFile(d:/中华十大名帖.zip, w, ZIP_DEFLATED)for file_name in os.listd…

java mariadb 使用,java连接mariaDB的设置,java连接mariadb

java连接mariaDB的设置,java连接mariadbjava连接mariaDB数据库的设置:(tomcat 8)第一种方法:使用tomcat自带的mysql-connector-java-5.1.40-bin.jarjava代码中的设置:driver驱动类为:com.mysql.jdbc.Driverurl为&#…

python产品发布会_【Mac系统 + Python + Django】之开发一个发布会系统【Django模型(三)】...

上一部分给大家介绍Django的视图。接下来继续来了解Django框架,来看第三部分,此部分是对数据库的操作。目录:一、设计系统表            返回目录首先打开sign/models.py,通过模型完成标的创建:from djang…

java 保留字符串,如何在Java中保留字符串而不使用反转功能

有以下几种在Java中反转字符串的方法:使用for循环使用While循环使用静态方法使用For循环使用for循环在Java中反转字符串的示例在下面的示例中, 我们使用了for循环来反转字符串。 for循环执行直到条件i> 0变为false为止。import java.util.Scanner;class ReverseS…

python增删改查csv文件_Python增删改查文件

#!/usr/bin/env python# -*- coding:utf-8 -*-# author:Erik Chan# datetime:2018/12/27 9:29# software: PyCharmimport os# 获取当前文件的父目录文件夹DIR os.path.dirname(os.path.abspath(__file__))cwd os.getcwd() #获取当前目录即dir目录下print(cwd)# 创建添加一个文…

php 模块 远程,ThinkPHP远程调用模块的操作方法 URL 参数格式

* 远程调用模块的操作方法 URL 参数格式 [项目://][分组/]模块/操作* param string $url 调用地址* param string|array $vars 调用参数 支持字符串和数组* param string $layer 要调用的控制层名称* return mixedfunction R($url,$varsarray(),$layer‘‘) {$info pathinfo($…

python3 csv 读入数组_如何将CSV数据读入NumPy中的记录数组?

我建议read_csv函数的pandas图书馆:import pandas as pddfpd.read_csv(myfile.csv, sep,,headerNone)df.valuesarray([[ 1. , 2. , 3. ],[ 4. , 5.5, 6. ]])DataFrame是一种具有潜在不同类型列的二维标记数据结构.你可以把它想象成一个电子表格或SQL表.我也建议…

php用cdn打不开,开启 CDN 后 wordpress 后台打不开的解决办法

现在很多站长把网站放到国外,使用 CDN 加速功能提高国内的访问速度,前面提到过开启腾讯云 CDN 后 wordpress 后台显示:连接被重置的解决办法,而今天遇到的是另外一种情况,有时候会遇到开启 CDN 后 wordpress 后台打不开…

android 支付宝月账单 统计图_记账其实很简单,用微信、支付宝就够了!

用微信、支付宝记账,从起告别糊涂账养成记账的好习惯,能让你对生活中的各种收支做到心中有数,从此告别糊涂账。长期坚持,能帮助我们理性消费、科学理财。但或许是因为记账的过程太枯燥,或许是因为没找到合适的记账方法…

mysql抖动可能的原因,12 | 为什么我的MySQL会“抖”一下?

你的 SQL 语句为什么变“慢”了平时执行很快的更新操作,其实就是在写内存和日志,而 MySQL 偶尔“抖”一下的那个瞬间,可能就是在刷脏页(flush)。当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写…

怎样快速画出一个正方体_图形与几何---正方体

一.概念描述现代数学:正方体亦称立方体。它是一种正多面体。即棱长相等的长方体,因此亦称正六面体,如下图。小学数学:2007年北京版教材第10册的第3页指出:长、宽、高都相等的长方体叫作正方体(也叫作立方体…

python argvparser_Python ArgumentParse的subparser用法说明

在写一些很小的机器学习项目的时候,我们往往希望training, testing和inference能共用一个入口main,但是不同的功能使用不同的input参数.当然如果三个功能对应三个.py脚本问题也不大,但是毕竟觉得不太优雅.这个时候就需要考虑如何让代码更加简单有条理.主要是最近在看parser有关…

python生成器函数(generator),python3学习笔记:生成器generator

简单了解下生成器generator,主要是yield的返回值和send的传参,记录下。生成器的基本属性generator 函数 yield简单说,就是一个函数,里面用到了关键字yield,就成为了一个生成器生成器和函数的不同主要在于&#xff1a…

复旦微电子fpga数据手册_专注FPGA图像加速领域 深维科技跨入发展快车道

日前,在2019赛灵思开发者大会(美洲站)上,深维科技正式面向全球发布ThunderImage三款重磅图像加速产品:全球最快的JPEG2JPEG缩略图方案、超高性能的JPEG2WebP转码方案及世界级超高密度算力的JPEG2JPEG缩略图方案。新产品一经发布立即“技惊”四…

oracle Blob保存方式,关于文件保存到Oracle中BLOB字段的方法及例子

关于文件保存到Oracle中BLOB字段的方法及例子-------------------------------------------public class FileOpClass{public static byte[] GetFileStream(string filepath){byte[] byteArray null;FileStream fs null;try{fs new FileStream(filepath, FileMode.Open);lon…

python 调c++生成的dll 中识别char *_基于tensorflow 实现端到端的OCR:二代身份证号识别...

最近在研究OCR识别相关的东西,最终目标是能识别身份证上的所有中文汉字数字,不过本文先设定一个小目标,先识别定长为18的身份证号,当然本文的思路也是可以复用来识别定长的验证码识别的。 本文实现思路主要来源于Xlvector的博客&a…