(1)直接删除法(当缺失值个数只占整体很小一部分时)

在采用删除法处理缺失值时,需要首先检测样本总体中确实值得的个数。python中统计缺失值的方法为:

import numpy as np

import pandas as pd

#读取数据,将空值形式的缺失值转换为可识别的类型

data = pd.read_csv('data.csv',encoding='GBK')

#用NaN代替空值

data = data.replace(' ',np,NaN)

print(data.columns)#['id','label','a','b','c','d']

#将每列的缺失值个数统计出来

null_all = data.isnull().sum()

#isnull函数检查数据是否有缺失返回布尔值,元素为空或者NaN返回Ture,否则就是False

#data.isnull().any()判断哪些列包含缺失值,该列存在缺失值则返回True,反之False

#data.isnull().sum()返回每列缺失值的数量

#查看a列缺失值的数据

a_null = data[pd.isnull(data['a'])]

#a列缺失值占的比重

a_ratio = len(data[pd.isnull(data['a'])])/len(data)#0.007

#缺失值所占的比重较小,丢弃缺失值,将存在缺失值的行丢弃

new_drop = data.dropna(axis=0)#(9981,6)

print(new_drop.shape)

#dropna()默认axis=0,删除带有空值的行(只要有一个就删除整行),axis=1删除带有空值的列

#dropna(how='all')整行都是空值时,才会被删除

#dropna(thresh=2),thresh设置阈值,缺失值个数大于该阈值整行(axis=0)或整列(axis=1)才会被删除

#丢弃某几列有缺失值的行

new_drop2 = data.dropna(axis=0,subset=['a','b'])#a和b列没有缺失值,所以不删除元素

print(new_drop2.shape)#(9990,6)

(2)使用一个全局常量填充缺失值

#用0填充缺失值

fill_data = data.fillna(0)

print(fill_data.isnull().sum())

#用一个数字填充缺失值df.fillna(0)

#用前一个数据代替缺失值:method='pad';

#用后一个数据代替缺失值:method='bfill';df.finall(method='bfill')

#用一个字符串代替缺失值,df.fillna('unknow')

#使用描述性统计的值代替缺失值,例如使用平均值代替缺失值

#df.fillna(df.mean())

#finall函数也实现不同的列,用不同的值进行填充,df.finall({1:0.5,3:-1})

#第一列用0.5填充,第三列用-1填充

#fillna默认返回新对象,可以使用inplace参数实现对现有对象直接进行修改

#new_data = df.finall(0,inplace=True)

(3)使用统计数字进行填充

#均值填充

data['a'] = data['a'].finall(data['a'].means())

#中位数填充

data['a'] = data['a'].finall(data['a'].median())

#众数填充

data['a'] = data['a'].finall(stats.mode(data['a'])[0][0])

#用前一个数字填充

data['a'] = data['a'].finall(method='pad')

#用后一个数字填充

data['a'] = data['a'].finall(method='bfill')

Imputer提供了缺失值处理的基本策略,比如使用缺失值所在的行或者列的均值,中位数,众数来代替缺失值

from sklearn.preprocessing import Imputer

imr = Imputer(missing_values='NaN',strategy='mean',axis=0)

imr = imr.fit(data.values)

imputed_data = pd.DataFrame(imr.transform(data.values))

print(imputed_data[0:15])

#strategy默认平均值填充,可选'median'(中位数),'most_frequent'(众数)

#指定轴向axis=0(默认列向);axis = 1,行向

#copy 默认True:创建数据集的副本;False:在任何地方都可以进行插值

(4)插值法,KNN填充

4.1 插值法

Interpolate()插值法,计算缺失值前一个和后一个值的平均数

data['a'] = data['a'].interpolate()

4.2 KNN填充

from fancyimpute import KNN

fill_knn = KNN(k=3).fit_transform(data)

data = pd.DataFrame(fill_knn)

print(data.head())

python处理csv文件缺失值_python处理数据中缺失值相关推荐

  1. python读取csv文件表头_Python读取CSV文件

    1.CSV简介 格式,用以存储表格数据,包括数字或者字符,下面主要介绍csv文件读取和写入两种方式 2. 读取CSV文件 Iterable:是一个行迭代器 Dialect:默认的读取方式是以excel ...

  2. python打开csv文件乱码_python脚本解决csv文件用excel打开乱码

    import os path ='csv文件路径' targetPath = '转换编码保存路径' def getfiles(path): path_collection=[] for dirpath ...

  3. python csv文件参数化_Python 读取csv文件的某一列数据,并定义两个pattern,确定变化区间...

    Python 读取csv文件的某一列数据,并定义两个pattern,[-1, 1, 1] 和 [1, -1, -1]可以确定不同的变化区间 抓取股票数据,确定股票的变化区间. Date 3D10 20 ...

  4. python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...

    如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...

  5. python导入csv文件-Python从CSV文件导入数据和生成简单图表

    原标题:Python从CSV文件导入数据和生成简单图表 我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数 ...

  6. python创建csv文件并写入-Python数据写入csv格式文件

    (只是传递,基础知识也是根基) Python读取数据,并存入Excel打开的CSV格式文件内! 这里需要用到bs4,csv,codecs,os模块. 废话不多说,直接写代码!该重要的内容都已经注释了, ...

  7. pandas python csv_python:pandas合并csv文件的方法(图书数据集成)

    数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformatio ...

  8. python csv读取数据 去掉标题-Python读csv文件去掉一列后再写入新的文件实例

    用了两种方式解决该问题,都是网上现有的解决方案. 场景说明: 有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id.目标是得到新文件只有mobile_id,pl ...

  9. python 写入csv 文件显示乱码_python 写入csv乱码问题解决方法

    需求背景 最近为公司开发了一套邮件日报程序,邮件一般就是表格,图片,然后就是附件.附件一般都是默认写到txt文件里,但是PM希望邮件里的附件能直接用Excel这种软件打开,最开始想保存为Excel,但 ...

最新文章

  1. 斯人若彩虹,遇上方知有
  2. GTS解密--GTS的原理、架构与特点
  3. JavaScript性能优化:度量、监控与可视化1
  4. 尝鲜.net core2.1 ——编写一个global tool
  5. cannot be resolved or is not a field
  6. Hibernate-面试题
  7. sql between 效率高吗_整个SQL语句的执行效率都靠它了...
  8. 2010年软件评测师真题精选
  9. 使用3CDaemon 进行ftp 传输文件 (linux-开发板) 的方法
  10. C# 如何添加PPT背景(纯色背景、渐变色背景、图片背景)
  11. Launch文件编写
  12. 【Git】从本地上传到github的文章显示图片的方法
  13. 易语言浏览本地html,简单的易语言读取网页文本程序
  14. Java 生成各种 PDF 实战方案(图片、模板、表格)
  15. 第六章 网络学习相关技巧2(权重设置)
  16. oracle中scott用户的创建
  17. arp命令--arping
  18. Mysql 的存储过程和存储函数
  19. 【iOS开发】——MRC(手动内存管理)的一些补充
  20. javaweb课程设计音乐播放网

热门文章

  1. vertical-align 和 img属性 和 鼠标样式
  2. HTML:基本的标签
  3. 艾伟:控件之ViewState
  4. 清晰还原!Photoshop处理人物模糊照片
  5. 爱情这东西,真的有报应吗…
  6. MySQL优化篇:单表索引失效
  7. JDK8:使用Optional进行变量判空、集合遍历
  8. 基于 Spring Cloud 的微服务架构分析
  9. 深入剖析RocketMQ源码-NameServer
  10. 被字节跳动T4级大佬鄙视了:让你10倍提升认知效率,就这3个方法!