面对缺失值三种处理方法:

  • option 1: 去掉含有缺失值的样本(行)
  • option 2:将含有缺失值的列(特征向量)去掉
  • option 3:将缺失值用某些值填充(0,平均值,中值等)

对于dropna和fillna,dataframe和series都有,在这主要讲datafame的

对于option1:

使用DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:

  • axis:

    • axis=0: 删除包含缺失值的行
    • axis=1: 删除包含缺失值的列
  • how: 与axis配合使用
    • how=‘any’ :只要有缺失值出现,就删除该行货列
    • how=‘all’: 所有的值都缺失,才删除行或列
  • thresh: axis中至少有thresh个非缺失值,否则删除
    比如 axis=0,thresh=10:标识如果该行中非缺失值的数量小于10,将删除改行
  • subset: list
    在哪些列中查看是否有缺失值
  • inplace: 是否在原数据上操作。如果为真,返回None否则返回新的copy,去掉了缺失值

建议在使用时将全部的缺省参数都写上,便于快速理解
examples:

             df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],         "toy": [np.nan, 'Batmobile', 'Bullwhip'],"born": [pd.NaT, pd.Timestamp("1940-04-25")     pd.NaT]})>>> dfname        toy       born0    Alfred        NaN        NaT1    Batman  Batmobile 1940-04-252  Catwoman   Bullwhip        NaT# Drop the rows where at least one element is missing.>>> df.dropna()name        toy       born1  Batman  Batmobile 1940-04-25# Drop the columns where at least one element is missing.>>> df.dropna(axis='columns')name0    Alfred1    Batman2  Catwoman# Drop the rows where all elements are missing.>>> df.dropna(how='all')name        toy       born0    Alfred        NaN        NaT1    Batman  Batmobile 1940-04-252  Catwoman   Bullwhip        NaT# Keep only the rows with at least 2 non-NA values.>>> df.dropna(thresh=2)name        toy       born1    Batman  Batmobile 1940-04-252  Catwoman   Bullwhip        NaT# Define in which columns to look for missing values.>>> df.dropna(subset=['name', 'born'])name        toy       born1    Batman  Batmobile 1940-04-25# Keep the DataFrame with valid entries in the same variable. >>> df.dropna(inplace=True)>>> dfname        toy       born1  Batman  Batmobile 1940-04-25

对于option 2:

可以使用dropna 或者drop函数
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

  • labels: 要删除行或列的列表
  • axis: 0 行 ;1 列
   df = pd.DataFrame(np.arange(12).reshape(3,4),                 columns=['A', 'B', 'C', 'D'])>>>dfA  B   C   D0  0  1   2   31  4  5   6   72  8  9  10  11# 删除列>>> df.drop(['B', 'C'], axis=1)A   D0  0   31  4   72  8  11>>> df.drop(columns=['B', 'C'])A   D0  0   31  4   72  8  11# 删除行(索引)>>> df.drop([0, 1])A  B   C   D2  8  9  10  11

对于option3

使用DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

  • value: scalar, dict, Series, or DataFrame
    dict 可以指定每一行或列用什么值填充
  • method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None
    在列上操作

    • ffill / pad: 使用前一个值来填充缺失值
    • backfill / bfill :使用后一个值来填充缺失值
  • limit 填充的缺失值个数限制。应该不怎么用
f = pd.DataFrame([[np.nan, 2, np.nan, 0],[3, 4, np.nan, 1],[np.nan, np.nan, np.nan, 5],[np.nan, 3, np.nan, 4]],columns=list('ABCD'))>>> dfA    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4# 使用0代替所有的缺失值
>>> df.fillna(0)A   B   C   D
0   0.0 2.0 0.0 0
1   3.0 4.0 0.0 1
2   0.0 0.0 0.0 5
3   0.0 3.0 0.0 4# 使用后边或前边的值填充缺失值
>>> df.fillna(method='ffill')A   B   C   D
0   NaN 2.0 NaN 0
1   3.0 4.0 NaN 1
2   3.0 4.0 NaN 5
3   3.0 3.0 NaN 4>>>df.fillna(method='bfill')A  B   C   D
0   3.0 2.0 NaN 0
1   3.0 4.0 NaN 1
2   NaN 3.0 NaN 5
3   NaN 3.0 NaN 4# Replace all NaN elements in column ‘A’, ‘B’, ‘C’, and ‘D’, with 0, 1, 2, and 3 respectively.
# 每一列使用不同的缺失值
>>> values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}
>>> df.fillna(value=values)A   B   C   D
0   0.0 2.0 2.0 0
1   3.0 4.0 2.0 1
2   0.0 1.0 2.0 5
3   0.0 3.0 2.0 4#只替换第一个缺失值>>>df.fillna(value=values, limit=1)A   B   C   D
0   0.0 2.0 2.0 0
1   3.0 4.0 NaN 1
2   NaN 1.0 NaN 5
3   NaN 3.0 NaN 4

房价分析:
在此问题中,只有bedroom一列有缺失值,按照此三种方法处理代码为:

# option 1 将含有缺失值的行去掉
housing.dropna(subset=["total_bedrooms"])  # option 2 将"total_bedrooms"这一列从数据中去掉
housing.drop("total_bedrooms", axis=1)  # option 3 使用"total_bedrooms"的中值填充缺失值
median = housing["total_bedrooms"].median()
housing["total_bedrooms"].fillna(median)
sklearn提供了处理缺失值的 Imputer类,具体的使用教程在这https://blog.csdn.net/dss_dssssd/article/details/82831240

pandas 处理缺失值[dropna、drop、fillna]相关推荐

  1. 数据清洗 dropna drop fillna

    机器学习最常用的数据清洗之 dropna drop fillna,存一份方便查资料用! dropna # axis=0 删除行,axis=1,删除列 # how=any, 只要有缺失值,就删除该行或该 ...

  2. Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop()、dropna()、isna()、isnull()、fillna())函数详解之详细攻略

    Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop().dropna().isna().isnull().fillna())函数详解之详细攻略 目录 pandas中缺 ...

  3. Pandas缺失值处理df.fillna()

    目录 1.将缺失值填充指定的值 2.按照一定的方法填充 3.平均值填充法 4.参考 1.将缺失值填充指定的值 import pandas as pd # 原数据 df = pd.DataFrame({ ...

  4. sklearn与pandas的缺失值处理

    housing数据集中的total_bedrooms有部分缺失,对于缺失值,通常我们有以下几种方式处理: 放弃有缺失值的样本 放弃整个特征 将缺失值设置为某个默认值:0.平均值.中位数等. panda ...

  5. pandas对缺失值NaN处理

    看下面这张图片,其中有缺失值NaN,处理数据时需要先对缺失值进行处理 1 .如何处理缺失值nan 获取缺失值的标记方式(NaN或者其他标记方式) 如果缺失值的标记方式是NaN 判断数据中是否包含NaN ...

  6. pandas dataframe缺失值(np.nan)处理:识别缺失情况、删除、0值填补、均值填补、中位数填补、加缺失标签、插值填充详解及实例

    pandas dataframe缺失值(np.nan)处理:识别缺失情况.删除.0值填补.均值填补.中位数填补.加缺失标签.插值填充详解及实例 isnull().natna().isna().fill ...

  7. python替换缺失值_详解Pandas 处理缺失值指令大全

    前言 运用pandas 库对所得到的数据进行数据清洗,复习一下相关的知识. 1 数据清洗 1.1 处理缺失数据 对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中 ...

  8. Python机器学习实战:如何用Pandas处理缺失值

    机器学习实战:这里没有艰深晦涩的数学理论,我们将用简单的案例和大量的示例代码,向大家介绍机器学习的核心概念.我们的目标是教会大家用Python构建机器学习模型,解决现实世界的难题. 现实和教程最大的区 ...

  9. pandas DataFrame 缺失值处理(数据预处理)

    pandas DataFrame 缺失值处理 (数据预处理) 创建DataFrame数据样例 import pandas as pd import numpy as np df = pd.DataFr ...

最新文章

  1. 三层交换机如何封装trunk_锐捷交换机常用配置命令汇总
  2. UNIX文件结构(转自UNIX/AIX操作系统基础教程)
  3. 使用 Java 11 安装 SAP Commerce Cloud 1905 的一些常见问题
  4. 软件测试面试选择判断提,软件测试面试常考判断题
  5. java 循环拼接字符串用分号隔开_Java 8中字符串拼接新姿势:StringJoiner
  6. 网络硬件设备(职高高考笔记)
  7. loc与iloc函数的使用
  8. Java实战视频bilibili
  9. SQL 取空格右边的字符_从零学会SQL,第2关
  10. 大数据在企业中起到什么作用
  11. 苹果在中国的审核规律探索一
  12. 如何一键查询物流信息并筛选出未签收单号
  13. 算法介绍及实现——基于遗传算法改进的BP神经网络算法(附完整Python实现)
  14. PS AD命令之Remove-adcomputer!
  15. Minimum Snap闭式求解相关公式推导
  16. QCC3040---UI tones module
  17. 针式 PKM 个人知识管理软件 视频简介
  18. springboot kafka集成
  19. html实现手风琴轮播图,javascript经典特效分享 手风琴、轮播图、图片滑动
  20. .podSpec文件相关知识整理

热门文章

  1. java制作安卓游戏脚本_autoA开源(用java写安卓无障碍脚本)
  2. 郑刚答王峰十问:Telegram只是过渡性产品,区块链可能给社交产品带来让人兴奋的巨大改变...
  3. Android ListView列表 刷新和加载更多
  4. windows全局消息钩子的一个BUG
  5. verilog语言的ps2键盘驱动设计
  6. Linux Mysql 数据库基础
  7. 计算机基础知识(基础入门小白专属)九
  8. Rimworld Mod教程 第十一章:术语名字
  9. iOS开发适配iPhone X 齐刘海处理,代码适配iPhoneX
  10. MySQL闪退解决办法看这里!