python处理csv文件缺失值_python处理数据中缺失值
(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处理数据中缺失值相关推荐
- python读取csv文件表头_Python读取CSV文件
1.CSV简介 格式,用以存储表格数据,包括数字或者字符,下面主要介绍csv文件读取和写入两种方式 2. 读取CSV文件 Iterable:是一个行迭代器 Dialect:默认的读取方式是以excel ...
- python打开csv文件乱码_python脚本解决csv文件用excel打开乱码
import os path ='csv文件路径' targetPath = '转换编码保存路径' def getfiles(path): path_collection=[] for dirpath ...
- python csv文件参数化_Python 读取csv文件的某一列数据,并定义两个pattern,确定变化区间...
Python 读取csv文件的某一列数据,并定义两个pattern,[-1, 1, 1] 和 [1, -1, -1]可以确定不同的变化区间 抓取股票数据,确定股票的变化区间. Date 3D10 20 ...
- python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...
如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...
- python导入csv文件-Python从CSV文件导入数据和生成简单图表
原标题:Python从CSV文件导入数据和生成简单图表 我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数 ...
- python创建csv文件并写入-Python数据写入csv格式文件
(只是传递,基础知识也是根基) Python读取数据,并存入Excel打开的CSV格式文件内! 这里需要用到bs4,csv,codecs,os模块. 废话不多说,直接写代码!该重要的内容都已经注释了, ...
- pandas python csv_python:pandas合并csv文件的方法(图书数据集成)
数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformatio ...
- python csv读取数据 去掉标题-Python读csv文件去掉一列后再写入新的文件实例
用了两种方式解决该问题,都是网上现有的解决方案. 场景说明: 有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobile_id.目标是得到新文件只有mobile_id,pl ...
- python 写入csv 文件显示乱码_python 写入csv乱码问题解决方法
需求背景 最近为公司开发了一套邮件日报程序,邮件一般就是表格,图片,然后就是附件.附件一般都是默认写到txt文件里,但是PM希望邮件里的附件能直接用Excel这种软件打开,最开始想保存为Excel,但 ...
最新文章
- 斯人若彩虹,遇上方知有
- GTS解密--GTS的原理、架构与特点
- JavaScript性能优化:度量、监控与可视化1
- 尝鲜.net core2.1 ——编写一个global tool
- cannot be resolved or is not a field
- Hibernate-面试题
- sql between 效率高吗_整个SQL语句的执行效率都靠它了...
- 2010年软件评测师真题精选
- 使用3CDaemon 进行ftp 传输文件 (linux-开发板) 的方法
- C# 如何添加PPT背景(纯色背景、渐变色背景、图片背景)
- Launch文件编写
- 【Git】从本地上传到github的文章显示图片的方法
- 易语言浏览本地html,简单的易语言读取网页文本程序
- Java 生成各种 PDF 实战方案(图片、模板、表格)
- 第六章 网络学习相关技巧2(权重设置)
- oracle中scott用户的创建
- arp命令--arping
- Mysql 的存储过程和存储函数
- 【iOS开发】——MRC(手动内存管理)的一些补充
- javaweb课程设计音乐播放网