python大数据之缺省值处理
一般对数据进行缺省值处理,都是全部的数据,所以这里先不做分割。
废话不多说,直接上干货
一些常用的命令
#读取csv文件
df_train = pd.read_csv("data2/train.csv")#读取xlsx文件
df_train = pd.read_excel("data2/train.csv")#保存csv文件
df_train.to_csv("test.csv",index=0) #一般是不保存索引的 #获取缺省值的情况
df_miss = df_train.isnull().sum()
df_miss#对缺省值的结果进行画图
df_miss[df_miss>0].plot(kind='bar')
plt.savefig("缺省值.jpg",dpi=200, bbox_inches='tight')#类型转换:这里是转换为float
for col in df_train:if col not in ['car_id','creatDate','regDate']: #不进行转换的特征df_train[col].fillna(0,inplace=True)df_train[col] = pd.to_numeric(df_train[col])
还有一些常用的dataframe操作可以参考如下文章。
python大数据之dataframe常用操作
接下来还要介绍缺省值填充的函数
fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
#value:固定值,可以用固定数字、均值、中位数、众数等,此外还可以用字典,series等形式数据;
#method:填充方法,'bfill','backfill','pad','ffill'
#axis: 填充方向,默认0和index,还可以填1和columns
#inplace:在原有数据上直接修改
#limit:填充个数,如1,每列只填充1个缺失值
删除法
删除缺省值超过一定数量的
import pandas as pd#删除所有样本中缺失值超过20%的行
def del_rows(data):t = int(0.8*data.shape[1])data = data.dropna(thresh=t)#保留至少有 t 个非空的行#data = data[(data.T != 0).any()]return data
#删除所有行中缺失值超过20%的列
def remcolumns(data):t = int(0.8*data.shape[0])data = data.dropna(thresh=t,axis=1)#保留至少有 t 个非空的列#data = data.loc[:, (data != 0).any(axis=0)]return data
临近值填充
对每一列的缺失值,采用临近位置的数据进行填充
#使用每列缺失值前面的值进行填充(按相应列填充,按照相应index前后填充)
df.fillna(method='ffill',inplace=True)
df.fillna(method='pad',inplace=True)
#使用每列缺失值后面的值进行填充(按相应列填充,按照相应index前后填充)
df.fillna(method='backfill',inplace=True)
df.fillna(method='bfill',inplace=True)
#使用每列缺失值前面的值进行填充(按相邻列填充,按照相应columns前后填充)
df.fillna(method='ffill',inplace=True,axis=1)
df.fillna(method='pad',inplace=True,axis='columns')
#使用每列缺失值后面的值进行填充(按相邻列填充,按照相应columns前后填充)
df.fillna(method='backfill',inplace=True,axis=1)
df.fillna(method='bfill',inplace=True,axis='columns')
平均值填充
一般针对数值型变量,采用平均值填充
方法一
#对所有数据进行平均值填充
DataFrame.fillna(DataFrame.mean())#对列进行平均值填充
df['B'] = df['B'].fillna(df['B'].mean())
df['B'].fillna(df['B'].mean(), inplace = True)#直接在原有的数据上进行修改
方法二
from sklearn.impute import SimpleImputer #导入模块
imp_mean=SimpleImputer(missing_values=np.nan,strategy='mean') #实例化,均值填充
imp_mean=imp_mean.fit_transform(data) #fit_transform一步完成调取结果
众数填充
一般是针对类别型变量,采用众数填充
#对所有数据进行众数填充
DataFrame.fillna(DataFrame.mode())#对列进行众数填充
df['B'] = df['B'].fillna(df['B'].mode())
df['B'].fillna(df['B'].mode(), inplace = True)#直接在原有的数据上进行修改
方法二
from sklearn.impute import SimpleImputer #导入模块
imp_mean=SimpleImputer(missing_values=np.nan,strategy='mode') #实例化,均值填充
imp_mean=imp_mean.fit_transform(data) #fit_transform一步完成调取结果
中位数填充
一般针对整数型变量,采用中位数进行填充
方法一
#对所有数据进行众数填充
DataFrame.fillna(DataFrame.median())#对列进行众数填充
df['B'] = df['B'].fillna(df['B'].median())
df['B'].fillna(df['B'].median(), inplace = True) #直接在原有的数据上进行修改
方法二
from sklearn.impute import SimpleImputer #导入模块
imp_mean=SimpleImputer(missing_values=np.nan,strategy='median') #实例化,均值填充
imp_mean=imp_mean.fit_transform(data) #fit_transform一步完成调取结果
KNN填充
knn找最近邻。
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=1)
imputer.fit_transform(data)
回归填充
对于有缺失值的特征值,将已知特征值代入模型来估计未知特征值,以此估计值来进行填充,该填充方法适用于缺失值为定量的数据类型。
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
#data为缺失的数据集
imp = IterativeImputer(max_iter=10, random_state=0)
imp.fit(data) print(np.round(imp.transform(data)))
总结
以上是我在建模比赛过程中,常用到的缺省值的填充方法,缺省值的填充应该很多其他方法,这里暂时就不作介绍了。
老规矩,有用,希望留下宝贵的二连!
python大数据之缺省值处理相关推荐
- python缺失值与异常值处理_pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)...
pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 de ...
- Python大数据+人工智能 学科视频教程
本课程整合了Python大数据+人工智能,从底层原理, 到上层应用从编程思想, 到案例实践梯度式学习. 课程简介: Python-Python大数据+人工智能 学科视频教程(1) 01-Python大 ...
- Python +大数据-知行教育(四)-意向用户主题看板_全量流程
Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...
- python+大数据-MySQL-day02(黑马)
python+大数据-MySQL-day02(黑马) 一 MySQL学习日志–变量,函数,流程控制 1.变量 系统变量:全局变量会话变量自定义变量:用户变量局部变量#一.系统变量说明:变量由系统定义, ...
- python大数据运维工程师待遇_大数据运维工程师具体是做什么的?
大数据运维的工作职责 一.集群管理 大数据需要分布式系统,也就是集群:Hadoop,Hbase,Spark,Kafka,Redis等大数据生态圈组建. 二.故障处理 1>.商用硬件使用故障是常态 ...
- Python+大数据-数据处理与分析-pandas快速入门
Python+大数据-数据处理与分析-pandas快速入门 1.Pandas快速入门 1.1DataFrame和Series介绍 1)DataFrame 用来处理结构化数据(SQL数据表,Excel表 ...
- Python+大数据-知行教育(一)-环境搭建 数据仓库
Python+大数据-知行教育(一)-环境搭建 数据仓库 1. 教育项目的数仓分层 回顾: 原有的基础分层 ODS层: 源数据层作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的 ...
- Python+大数据-数据分析与处理(六)-综合案例
Python+大数据-数据分析与处理(六)-综合案例 案例一:Appstore数据分析 学习目标 掌握描述性数据分析流程 能够使用pandas.seaborn进行数据分析和可视化 1.案例介绍 案例背 ...
- 零起点Python大数据与量化交易
零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的"神奇公式" 2 1.1.1 案例1-1:亿万富翁的"神奇公式" 2 1.1 ...
- Python+大数据-Python学习(七)
Python+大数据-Python学习(七) 1.文件的基本操作 文件打开的格式: file = open(文件路径,读写模式) - open默认打开的式r模式 文件路径:可以写相对路径,也可以写 ...
最新文章
- python中的新式类与旧式类的一些基于descriptor的概念(下)
- 换掉 Maven,我用它!!!
- SpringBoot操作使用Spring-Data-Jpa
- 将当前的head推送到远程_git 入门教程之远程仓库
- R语言ggplot2可视化分面图(faceting)、设置每个分面的标题在右侧(right side)、并在右侧分面图的外侧添加整图的标题信息(facet title)
- 捕捉mysql中不可忽视的知识点(一)
- linux虚拟磁盘管理pe大小6,Linux下磁盘的高级管理——LVM逻辑卷管理
- c语言影碟出租程序设计总结,vc++影碟出租系统的设计与开发
- Excel电子表格输入技巧大比拼
- php 日志函数,php 写入日志函数
- git checkout 会把改动带过去吗_原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会...
- HDU2045 不容易系列之(3)—— LELE的RPG难题
- Key/Value之王Memcached初探:一、掀起Memcached的盖头来
- java多线程thread使用_Java多线程——thread及runnable的基本使用及交替执行
- Android对话框控件读写,Android 对话框控件
- [渝粤教育] 南昌大学 生物化学 参考 资料
- python 灰度图转rgb rgb转灰度之间的变化
- 零信任的终端安全闭环
- java编程APP_用java编程的软件叫什么?
- Matlab 安装免费提供的 MinGW-w64 C/C++ 编译器
热门文章
- Maven的学习与2022IDEA创建Maven的web项目的教程(这个比上一期更“啰嗦哦~,前面不想删了,整体再来一遍”)
- MyBatis Generator报错:Cannot instantiate object of type
- 第十三章 音视频播放——Qt
- 基础呀基础,用二极管防止反接,你学会了吗?
- 《结构思考力》如何把200ml的水倒入100ml的杯子里?
- 双S曲线轨迹(详细推导)
- s8 android 8.0变化,等待很长时间!三星S8系列手机现在可以升级到Android 8.0系统的稳定版本!...
- 计算机芯片级维修包括哪些,计算机芯片级维修1
- 建立统计回归模型的基本步骤_基本回归模型
- python入门知识以及print的用法