目录

介绍

查找丢失的数据元素

使用drop和dropna删除缺少的Pandas列

丢掉丢失的Pandas行

替换值

摘要


将数据加载到灵活的结构后,我们需要确定如何处理丢失和重复的数据元素。

  • 下载CSV和数据库文件-127.8 KB
  • 下载源代码122.4 KB

介绍

本文是使用PythonPandas进行数据清洗系列的一部分。它旨在利用数据科学工具和技术来使开发人员快速启动并运行。

如果您想查看本系列的其他文章,可以在这里找到它们:

  • 第1部分-介绍Jupyter和Pandas
  • 第2部分-将CSV和SQL数据加载到Pandas中
  • 第3部分-纠正Pandas中的缺失数据
  • 第4部分-合并Pandas中的多个数据集
  • 第5部分-清理Pandas DataFrame中的数据
  • 第6部分-重塑Pandas DataFrame中的数据
  • 第7部分-使用Seaborn和Pandas进行数据可视化

现在我们的数据已加载并准备就绪,我们需要研究数据集可能包含的一些问题。

请注意,我们已经创建了完整的Jupyter Notebook,其中包含该系列模块的源数据文件,您可以在文章开头部分下载和安装。

大多数数据清理过程的第一步是分析数据集,以查找并处理所有丢失的数据。当没有数据值被存储时,数据集中通常会出现数据丢失或值丢失的情况,通常是当值不是强制性形式或从其他变量计算得出时。数据集中丢失的数据很常见,并且可能对数据集的可视化和解释产生重大影响。

查找丢失的数据元素

首先,我们必须先确定要丢失的数据量和值,然后再决定如何解释丢失的值。Pandas DataFrames具有一些很棒的方法,包括:

  • isnull方法检查每个字段是否为空。
  • sum方法将传递到其中的字段加在一起。

首先,让我们开始一个新的代码块并输入以下内容:

customers.isnull()

这将在表中检查表中的每个字段,以查看其是否为空值。让我们对此进行一些扩展以得出摘要:

customers.isnull().sum()

结果如下:

这样可以更好地总结我们的值,除了名字和姓氏外,似乎还有许多要修正的值。让我们看一下处理缺失数据时可用的一些选项。

使用drop和dropna删除缺少的Pandas列

有时缺失值出现在我们实际上根本不需要报告的列中,或者它们的缺失值很少,因此我们可以完全删除受影响的行。让我们使用以下方法删除一些不需要的值:

  • drop方法使用自定义过滤器删除列或行
  • dropna方法删除包含空元素的列或行

如果我们先看示例列,则缺少值最多的三个项目中的两个是email和street_num。这些数据元素通常是唯一的,尽管查看电子邮件域名(@符号后的所有内容)可能很重要,但是大多数时候我们不想在这些列上做很多报告,因此可以通过修改来删除它们该代码块可以:

customers.drop(columns='email', inplace=True)
customers.drop(columns='street_num', inplace=True)customers.isnull().sum()

如果现在运行此代码块,将会看到两列已从数据结构中删除。尽管邮政编码列中的缺失项目数量仍然很高,但是这会使缺失值可能更好一些,因此也请删除邮政编码。

另外,我们将假设可视化到街道级别并不重要,因此我们也将删除这些列。请务必注意,由于我们使用的是就地移除功能,因此您需要从头开始运行notebook,否则会出错。

丢掉丢失的Pandas行

接下来,我们将删除一些无法根据字段解释的行,尤其是city和state。如果客户未提供此信息,我们将尝试删除这些行,看看这会影响到总数据的多少。

启动一个新的代码块并添加以下内容:

customers.dropna(subset = ['city'], inplace=True)print(customers.shape)
print(customers.isnull().sum())

这将删除城市列中所有值为零的行。

根据打印输出,您将看到该city字段中现在没有空值,并且从1000条减少到921条记录。

修改上面的代码,并对该state字段执行相同的删除过程。这使总字段减少到848,因此存在少量重叠,并且1000条记录中的848条记录仍然相当不错。

替换值

这只会使gender字段具有空白值,但是我们将对该字段使用另一种方法,并将其替换为静态值“未指定”。

  • fillna方法使用指定的值填充列或行

启动一个新的代码块并添加以下内容:

customers["gender"].fillna('Unspecified', inplace=True)print(customers.shape)
print(customers.isnull().sum())

这将扫描gender列上的客户数据集,并将所有缺少的值更改为“未指定”。

如果您现在查看输出,那么我们所有的列都有值。即使我们没有仔细研究产品,我们也会在产品DataFrame的company列中的缺失值中添加值“Unspecified”。

摘要

我们简要介绍了一些简单的方法来处理数据集中的缺失值。接下来,我们将研究如何将DataFrames合并为更大、更完整的标准化数据集,以便我们完成数据清理并开始可视化。

纠正Pandas中的缺失数据相关推荐

  1. 机器学习中如何处理缺失数据(NAN和Ifo)?

    机器学习中如何处理缺失数据(NAN)? 文章目录: 一.NAN 和 Inf 二.机器学习中空值的处理方法 一.NAN 和 Inf NAN(Not A number):意思:不是一个数字,是一个空值 I ...

  2. Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略

    Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略 目录 pandas中常见的数据类型转换方法 T1.读取时直接转换数据类型 T2.采用astype

  3. python查看dataframe数据类型_python pandas中DataFrame类型数据操作函数的方法

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

  4. python dataframe函数_python pandas中DataFrame类型数据操作函数的方法

    这篇文章主要介绍了关于python pandas中DataFrame类型数据操作函数的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python数据分析工具pandas中Data ...

  5. python pandas series加速原理_python pandas中对Series数据进行轴向连接的实例

    有时候我们想要的数据合并结果是数据的轴向连接,在pandas中这可以通过concat来实现.操作的对象通常是Series. Ipython中的交互代码如下: In [17]: from pandas ...

  6. Pandas中常见的数据运算 | 图解Pandas-图文第5篇

    01写在前面 大家好,我是阳哥,欢迎来到「Python数据之道」. 本次是<图解Pandas>系列图文内容的 第 05 篇,主要介绍 Pandas 中常见的数据运算 . 本文是付费阅读文章 ...

  7. Pandas学习——处理缺失数据

    缺失值的统计和删除 缺失信息的统计 缺失数据可以使用 isna 或 isnull (两个函数没有区别)来查看每个单元格是否缺失,结合 mean 可以计算出每列缺失值的比例: df = pd.read_ ...

  8. Python—pandas中DataFrame类型数据操作函数

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构.  本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数.  1)查看DataFram ...

  9. Pandas的学习(5.pandas中处理丢失数据和空值数据以及填充空值数据)

    处理丢失数据 有两种丢失的数据:        --  None        --  np.nan(NaN) 1.None None是Python自带的,其类型为python object.因此,N ...

最新文章

  1. 任务调度算法题Java_一个任务调度问题-----算法导论
  2. 抢鲜!华硕240MIMOWL-566gM
  3. 使用NuGet下载旧版本的软件包
  4. Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法
  5. 2012服务器系统关闭网络共享,提供网络服务的前提,Windows Server 2012如何更改高级共享设置...
  6. 如何在Vue 中管理 Mixins(搞懂这两点就足够了)
  7. spring框架中Bean的基本属性及调用外部properties等配置文件的方法介绍
  8. 用MaskNetwork代币MASK首轮公开销售已结束,今晚23:00将进行第二轮售卖
  9. php 对ioc容器的理解,关于php:了解IoC容器和依赖注入
  10. python封装功能讲解_python学习28——面向对象实例讲解与封装
  11. 金山打字通计算机英语,金山打字通英文版
  12. PHOTOSHOP 小技巧
  13. 计算机软件的四种人才
  14. 【BZOJ4453】cys就是要拿英魂! 后缀数组+单调栈+set
  15. (翻译)箭头和省略号的使用方式
  16. 2022-3-19(洛谷)
  17. Txilm Protocol: Monoxide公链系统中的区块压缩算法
  18. mac如何强制退出程序?强制退出程序的六种方法
  19. RT-Thread-设备(fal)
  20. Eclipse中导入项目后页面报错org.jboss.tools.vpe.xulrunner.XulRunnerBundleNotFoundException: Bundle org.mozilla.

热门文章

  1. deep linux 看视频卡,在Deepin 20等Linux系统下用Chrome看虎牙直播经常卡的处理
  2. java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
  3. 让你的原创设计作品展示给世界
  4. 稀缺PSD分层质感男模特男装电商海报
  5. 高品质平板电脑模型为您的作品演示加分
  6. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  7. win10java配置环境变量msi_Windows10+eclipse+hadoop2.7.1环境配置+wordcount-折腾笔记
  8. mysql数据库合并游戏合服_浅谈滚服游戏如果实现一键合服
  9. C语言单元测试框架-cmocka示例
  10. ncurses窗口机制:newwin(),wprintw(),delwin(),box(),wborder(),