大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
      • NumPy 数组计算
      • 拷贝
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
        • 概述
        • dropna()
        • fillna()
        • isnull()
        • notnull()
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Python
  • Pandas
Will
2022-08-04
目录

缺失值处理

# 概述

  1. pandas 中的缺失值用 NaN(Not a Number)来表示。
  2. 时间的缺失值用 NaT(Not a Time)来表示。
  3. 如果要显式地使用 NaN 值,可以使用numpy.nan来获取。
  4. Python 内置的 None 值在 pandas 中也是 NaN。

处理缺失值的主要方法:

方法说明
dropna根据各标签值中是否存在却只出具对轴变迁进行过滤,可通过阈值调节对缺失值的容忍度
fillna用指定值或插值方法(如ffill或bfill)填充缺失数据
isnull返回一个含有布尔值的对象,这些布尔值表示哪些值是NaN
notnull返回一个含有布尔值的对象,这些布尔值表示哪些值不是NaN
import numpy as np
import pandas as pd
1
2

# dropna()

s.dropna(axis=0, inplace=False, **kwargs)

df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

  • axis:删除包含缺失值的行还是列。默认为行
  • how:指定删除方式。默认为 any,只要有一个为缺失值就删除;如果指定为 all,则该行或列全部为缺失值才删除
  • thresh:指定至少包含几个缺失值才删除
  • subset:指定需要考虑缺失值的标签
  • inplace:是否原地删除
df = pd.DataFrame({'name':['张三', '李四', '王五', '赵六', '陈七'], 'age':[20,21, np.nan, np.nan, np.nan], 'city':['cd', 'bj', np.nan,'gz', np.nan]})
df
1
2
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN NaN
3 赵六 NaN gz
4 陈七 NaN NaN
df.dropna(axis=0)
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
df.dropna(axis=1)
1
name
0 张三
1 李四
2 王五
3 赵六
4 陈七
df.dropna(how='all')
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN NaN
3 赵六 NaN gz
4 陈七 NaN NaN
df.dropna(thresh=2)
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
3 赵六 NaN gz
df.dropna(subset=['city'])
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
3 赵六 NaN gz

# fillna()

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

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

  • value:填充的值。可以为标量,dict, Series,DataFrame
  • method:填充方式。可选值为 backfill,bfill,pad,ffill,None
  • axis:沿着哪个轴填充
  • inplace:是否原地填充
df.fillna(0)
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 0.0 0
3 赵六 0.0 gz
4 陈七 0.0 0
df.fillna({'age': 18, 'city': 'cd'})
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 18.0 cd
3 赵六 18.0 gz
4 陈七 18.0 cd
df.fillna(method='ffill')
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 21.0 bj
3 赵六 21.0 gz
4 陈七 21.0 gz
df.fillna(method='pad')
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 21.0 bj
3 赵六 21.0 gz
4 陈七 21.0 gz
df.fillna(method='bfill')
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN gz
3 赵六 NaN gz
4 陈七 NaN NaN
df.fillna(method='backfill')
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN gz
3 赵六 NaN gz
4 陈七 NaN NaN

# isnull()

df
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN NaN
3 赵六 NaN gz
4 陈七 NaN NaN
df.isnull()
1
name age city
0 False False False
1 False False False
2 False True True
3 False True False
4 False True True

# notnull()

df.notnull()
1
name age city
0 True True True
1 True True True
2 True False False
3 True False True
4 True False False
df[df.notnull()]
1
name age city
0 张三 20.0 cd
1 李四 21.0 bj
2 王五 NaN NaN
3 赵六 NaN gz
4 陈七 NaN NaN
上次更新: 2023/11/01, 03:11:44

← 文件输入与输出 字符串处理→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式