一般对数据进行缺省值处理,都是全部的数据,所以这里先不做分割。

废话不多说,直接上干货

一些常用的命令

#读取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大数据之缺省值处理相关推荐

  1. python缺失值与异常值处理_pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)...

    pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 de ...

  2. Python大数据+人工智能 学科视频教程

    本课程整合了Python大数据+人工智能,从底层原理, 到上层应用从编程思想, 到案例实践梯度式学习. 课程简介: Python-Python大数据+人工智能 学科视频教程(1) 01-Python大 ...

  3. Python +大数据-知行教育(四)-意向用户主题看板_全量流程

    Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...

  4. python+大数据-MySQL-day02(黑马)

    python+大数据-MySQL-day02(黑马) 一 MySQL学习日志–变量,函数,流程控制 1.变量 系统变量:全局变量会话变量自定义变量:用户变量局部变量#一.系统变量说明:变量由系统定义, ...

  5. python大数据运维工程师待遇_大数据运维工程师具体是做什么的?

    大数据运维的工作职责 一.集群管理 大数据需要分布式系统,也就是集群:Hadoop,Hbase,Spark,Kafka,Redis等大数据生态圈组建. 二.故障处理 1>.商用硬件使用故障是常态 ...

  6. Python+大数据-数据处理与分析-pandas快速入门

    Python+大数据-数据处理与分析-pandas快速入门 1.Pandas快速入门 1.1DataFrame和Series介绍 1)DataFrame 用来处理结构化数据(SQL数据表,Excel表 ...

  7. Python+大数据-知行教育(一)-环境搭建 数据仓库

    Python+大数据-知行教育(一)-环境搭建 数据仓库 1. 教育项目的数仓分层 回顾: 原有的基础分层 ODS层: 源数据层作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的 ...

  8. Python+大数据-数据分析与处理(六)-综合案例

    Python+大数据-数据分析与处理(六)-综合案例 案例一:Appstore数据分析 学习目标 掌握描述性数据分析流程 能够使用pandas.seaborn进行数据分析和可视化 1.案例介绍 案例背 ...

  9. 零起点Python大数据与量化交易

    零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的"神奇公式" 2 1.1.1 案例1-1:亿万富翁的"神奇公式" 2 1.1 ...

  10. Python+大数据-Python学习(七)

    Python+大数据-Python学习(七) 1.文件的基本操作 文件打开的格式: file = open(文件路径,读写模式) ​ - open默认打开的式r模式 文件路径:可以写相对路径,也可以写 ...

最新文章

  1. python中的新式类与旧式类的一些基于descriptor的概念(下)
  2. 换掉 Maven,我用它!!!
  3. SpringBoot操作使用Spring-Data-Jpa
  4. 将当前的head推送到远程_git 入门教程之远程仓库
  5. R语言ggplot2可视化分面图(faceting)、设置每个分面的标题在右侧(right side)、并在右侧分面图的外侧添加整图的标题信息(facet title)
  6. 捕捉mysql中不可忽视的知识点(一)
  7. linux虚拟磁盘管理pe大小6,Linux下磁盘的高级管理——LVM逻辑卷管理
  8. c语言影碟出租程序设计总结,vc++影碟出租系统的设计与开发
  9. Excel电子表格输入技巧大比拼
  10. php 日志函数,php 写入日志函数
  11. git checkout 会把改动带过去吗_原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会...
  12. HDU2045 不容易系列之(3)—— LELE的RPG难题
  13. Key/Value之王Memcached初探:一、掀起Memcached的盖头来
  14. java多线程thread使用_Java多线程——thread及runnable的基本使用及交替执行
  15. Android对话框控件读写,Android 对话框控件
  16. [渝粤教育] 南昌大学 生物化学 参考 资料
  17. python 灰度图转rgb rgb转灰度之间的变化
  18. 零信任的终端安全闭环
  19. java编程APP_用java编程的软件叫什么?
  20. Matlab 安装免费提供的 MinGW-w64 C/C++ 编译器

热门文章

  1. Maven的学习与2022IDEA创建Maven的web项目的教程(这个比上一期更“啰嗦哦~,前面不想删了,整体再来一遍”)
  2. MyBatis Generator报错:Cannot instantiate object of type
  3. 第十三章 音视频播放——Qt
  4. 基础呀基础,用二极管防止反接,你学会了吗?
  5. 《结构思考力》如何把200ml的水倒入100ml的杯子里?
  6. 双S曲线轨迹(详细推导)
  7. s8 android 8.0变化,等待很长时间!三星S8系列手机现在可以升级到Android 8.0系统的稳定版本!...
  8. 计算机芯片级维修包括哪些,计算机芯片级维修1
  9. 建立统计回归模型的基本步骤_基本回归模型
  10. python入门知识以及print的用法