Python数据分析:缺失值检测与处理

简介: Python数据分析:缺失值检测与处理

检测缺失值


我们先创建一个带有缺失值的数据框(DataFrame)。

import pandas as pd
df = pd.DataFrame(
    {'A': [None, 2, None, 4],
     'B': [10, None, None, 40], 
     'C': [100, 200, None, 400],
     'D': [None, 2000, 3000, None]})
df
复制代码


image.png

数值类缺失值在 Pandas 中被显示为 NaN (Not A Number)。下面看看如何判断哪些列或者哪些行有缺失值。


1.info()

image.png

info() 返回的结果中,我们只需要观察每一列对应的 Non-Null Count 的数量是否等于 RangeIndex(索引范围) 即可。


2.isnull()

isnull() 返回一个与原 DataFrame 大小(列数,行数)相同的数据框,行列对应的数据代表着该位置是否为缺失值。

df.isnull()
复制代码

image.png

使用 sum() 来检测每列中的缺失值的数量。

df.isnull().sum()
复制代码

image.png

通过 .TDataFrame 转置,获取检测每行中缺失值的数量。

df.isnull().T.sum()
复制代码

image.png


缺失值处理


删除缺失值

如果出现缺失值的行/列重要性不大的话,可以直接使用 dropna() 删除带有缺失值的行/列。

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


参数含义

  • axis:控制行列的参数,0 行,1 列。
  • how:any,如果有 NaN,删除该行或列;all,如果所有值都是 NaN,删除该行或列。
  • thresh:指定 NaN 的数量,当 NaN 数量达到才删除。
  • subset:要考虑的数据范围,如:删除缺失行,就用subset指定参考的列,默认是所有列。
  • inplace:是否修改原数据,True直接修改原数据,返回 None,False则返回处理后的数据框。


指定 axis = 1,如果列中有缺失值,则删除该列。

df.dropna(axis=1, how='any')
复制代码

image.png

由于每列都有缺失值,所以只剩索引。

指定 axis = 0(默认),如果行中有缺失值,则删除该行。

df.dropna(axis=0, how='any')
复制代码

image.png


以 ABC 列为参照,删除这三列都是缺失值的行。

df.dropna(axis=0, subset=['A', 'B', 'C'], how='all')
复制代码

image.png


保留至少有3个非NaN值的行。

df.dropna(axis=0, thresh=3)
复制代码

image.png


填补缺失值

另一种常见的缺失值处理方式就是使用 fillna() 填补缺失值。

df.fillna(value=None,
          method=None,
          axis=0,
          inplace=False,
          limit=None)
复制代码


1. 直接指定填充值

df.fillna(666)
复制代码

image.png


2.用缺失值前/后的值填充

按前一个值填充

method 值为 ffillpad时,按前一个值进行填充。

axis = 0,用缺失值同一列的上一个值填充,如果缺失值在第一行则不填充。

axis = 1,用缺失值同一行的上一个值填充,如果缺失值在第一列则不填充。

df.fillna(axis=0, method='pad')
复制代码

image.png


按后一个值填充

method 值为 backfillbfill时,按后一个值进行填充。

axis = 0,用缺失值同一列的下一个值填充,如果缺失值在最后一行则不填充。

axis = 1,用缺失值同一行的下一个值填充,如果缺失值在最后一列则不填充。

df.fillna(axis=0, method='bfill')
复制代码

image.png


指定相应的方法来填充

df.fillna(df.mean())
复制代码

image.png


limit限制填充次数

在ABCD列上,每列只填充第一个空值。

df.fillna(value=666, axis=1, limit=1)
复制代码

image.png



相关文章
|
19天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
51 0
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
33 2
|
18天前
|
机器学习/深度学习 PyTorch TensorFlow
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
65 1
|
20天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2
|
11天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
11天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
13天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
14天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第33天】本文将介绍如何使用Python编程语言进行数据分析和可视化。我们将从数据清洗开始,然后进行数据探索性分析,最后使用matplotlib和seaborn库进行数据可视化。通过阅读本文,你将学会如何运用Python进行数据处理和可视化展示。
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
82 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
183 4
下一篇
无影云桌面