社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用Python和Pandas的最简单的数据清理方法

Python程序员 • 4 年前 • 406 次点击  

在本文中,我们将学习如何使用Python包Pyjanitor简化数据预处理工作。具体来说,我们将学习如何:

  • 向一个Pandasdataframe(数据帧)中添加一个列

  • 删除缺失的值

  • 删除一个空列

  • 清洗列名称


也就是说,我们将学习如何使用Pyjanitor清理Pandas数据帧。在所有Python数据操作示例中,我们还将看到如何仅使用Pandas的功能来实现这些操作。


Pyjanitor是什么?


Pyjanitor是什么?在我们继续学习如何使用Pandas和Pyjanitor来清理数据集之前,我们将学习这个包。Python包Pyjanitor使用基于文本的API扩展了Pandas。这个易于使用的API为我们提供了方便的数据清理技术。显然,它一开始是R包 janitor的一部分。此外,它的灵感来自于R包 dplyr的易用性和表现力。注意,有一些不同的方式可以使用这些方法,本文不会涵盖所有方式(请参阅文档:https://pyjanitor.readthedocs.io/  )。

如何安装 Pyjanitor


有两种比较容易的方法来安装Pyjanitor:


1.使用Pip安装Pyjanitor 


2.使用Conda安装Pyjanitor:


既然我们已经知道了Pyjanitor是什么以及如何安装这个包,那我们很快就可以继续学习Python数据清理教程了,学习如何从Pandas中删除缺失的值。注意,本Pandas教程将详细介绍如何使用Pandas和Pyjanitor来实现这一点。最后,我们将有一个完整的只使用Pyjanitor的数据清理示例和一个链接到包含所有代码的Jupyter Notebook的链接。


  • 使用Pandas进行数据操作:简明教程(https://www.marsja.se/data-manipulation-pandas-tutorial/  )


假数据


在第一个Python数据操作示例中,我们将使用一个假数据集。更具体地说,我们将创建一个数据帧,其中有一个空列和一些缺失的值。在本文的这一部分中,我们将进一步使用Python包SciPy和NumPy。也就是说,我们还需要安装这些包。


在这个例子中,我们要创建三个列;Subject, RT (响应时间)和 Deg。要创建响应时间列,我们将使用SciPy的norm来创建正态分布的数据。


使用Scipy创建Python正态分布


在下一个代码块中,我们使用正态分布为响应时间创建一个变量。

重新排列列表并添加缺失的值


此外,我们再添加一些缺失的值,并重新排列正态分布的数据列表:


从字典创建数据帧


最后,我们将为我们的两个变量创建一个字典,并使用该字典来创建一个Pandas数据帧:

从字典创建DataFrame


在Python中使用Pandas和Pyjanitor进行数据清理


如何向Pandas Dataframe添加一个列


现在我们已经从一个字典创建了我们的数据帧,我们准备向它添加一个列。在下面的示例中,我们将使用Pandsa和Pyjanitors方法。


1. 向Pandas Dataframe追加一个列


使用Pandas向一个数据帧添加一个列是非常容易的。在下面的例子中,我们将向Pandas 数据帧中追加一个空列:

向数据帧中添加列


2. 使用Pyjanitor向Pandas Dataframe添加一个列


现在,我们将使用add_column方法向该数据帧中追加一个列。添加一个空列不像使用上面的方法那么容易。然而,正如您将在本文末尾看到的,我们可以在创建我们的数据帧时使用所有方法:

向数据帧中追加列


如何删除Pandas Dataframe中的缺失值


我们的数据集远远不够完整,这是很常见的。这可能是由于测量仪器的错误,人们忘记或拒绝回答某些问题,以及许多其他事情。尽管缺失的信息背后有各种原因,但这些行被称为缺失值。在Pandas的框架中,缺失值由符号NA编码,这与在R统计环境中很像。Pandas有isna()函数来帮助我们识别数据集中的缺失值。如果我们想删除缺失值,Pandas有一个函数dropna()。


1.使用Pandas dropna方法删除缺失值


在下面的代码示例中,我们删除所有具有缺失值的行。注意,如果我们想修改该数据帧,我们应该添加inplace参数并将其设置为true。



2.使用PyJanitor从Pandas Dataframe中删除缺失值


使用Pyjanitor从Pandas Dataframe中删除缺失值的方法与上面的方法相同。也就是说,我们将使用dropna方法。但是,当我们使用Pyjanitor从该数据帧中删除缺失数据时,我们还会使用subset参数来选择要使用哪些列:


如何从Pandas Dataframe中删除一个空列


在下一个Pandas数据操作示例中,我们将从数据帧中删除空列。首先,我们将使用Pandas删除空列,然后,我们将使用Pyjanitor。请记住,在本文的最后,我们将有一个完整的示例,其中我们在实际创建Pandas Dataframe的同时对所有数据进行清理。


1. 从Pandas Dataframe中删除一个空列


当我们想删除一个空列(例如,带有缺失值)时,我们将再次使用Pandas的dropna方法。然而,我们还将使用axis方法并将其设置为1(针对列)。此外,我们还必须使用参数how并将其设置为' all '。如果我们不这样做,它将删除任何带有缺失值的列。

删除空列


2. 使用Pyjanitor从Pandas Dataframe中删除一个空列


使用Pyjanitor删除一个空列要更容易一点:


如何在Pandas Dataframe中重命名列


现在我们知道了如何删除缺失值、向一个Pandas 数据帧中添加一个列以及如何删除一个列,我们将继续这个数据清理教程来学习如何重命名列。


例如,在我们学习了《如何将数据从一个JSON文件加载到一个Pandas数据帧》的文章中,我们重新命名了列,以便稍后更容易地使用该数据帧。在下面的示例中,我们将读取一个JSON文件,并使用Pandas 数据帧方法rename和Pyjanitor来重命名列。

更多关于将数据加载到数据帧的文章:

  • 如何使用Python和Pandas读写JSON文件 https://www.marsja.se/how-to-read-and-write-json-files-using-python-and-pandas/ 

  • Pandas读取CSV教程 https://www.marsja.se/pandas-read-csv-tutorial-to-csv/ 

  • Pandas Excel教程:如何读写Excel文件 https://www.marsja.se/pandas-excel-tutorial-how-to-read-and-write-excel-files/ 


1.在Pandas Dataframe中重命名列


如上图所示,我们想要删除一些空格和特殊字符。在第一个重命名列的例子中,我们将使用Pandas的 rename方法和正则表达式一起来重命名列(即,我们将用下划线替换空格和\)。


2. 如何使用Pyjanitor和clean_names重命名列


使用Pyjanitor重命名一个列(或多个列)要容易得多。实际上,当我们导入了这个Python包之后,我们就可以使用clean_names方法,它将给出与使用Pandas的rename方法相同的结果。事实上,使用clean_names,我们还可以将列名称中的所有字母转换为小写:


当从磁盘加载数据时,如何清理数据


使用Pyjanitor清理我们的数据的一个很酷的地方是,我们可以在加载数据时使用上述所有方法。例如,在最后一个数据清理示例中,我们将向该数据帧添加一个列,删除空列,删除缺失的数据,并清理列名称。这就是与Pyjanitor一起工作使我们的生活更容易的原因。


使用Pyjanitor聚合数据


在最后一个例子中,我们将使用Pandas方法agg、groupby和reset_index,以及Pyjanitor方法collapse_levels来计算每个扇区的平均值和标准:


更多关于使用Python和Pandas对数据进行分组和聚合的文章:

  • Python Pandas分组教程 https://www.marsja.se/python-pandas-groupby-tutorial-examples/ 

  • 使用Python进行描述性统计 https://www.marsja.se/pandas-python-descriptive-statistics/ 


结论


在这篇文章中,我们学习了一些数据清理方法。具体来说,我们学习了如何向一个Pandas数据帧追加一个列、删除空列、处理缺失值以及重命名列(即,获得更好的列名)。当然,当我们使用Pandas和Pyjanitor时,还有更多的数据清理方法可用。


总之,此Python包所增加的方法与R包janitor和dplyr中的方法是相似的。在预处理数据时,这些方法将使我们的生活更容易。


你最喜欢的数据清理方法和/或包是什么?不管你使用的是R、Python或任何其他编程语言。请在下方留言!


英文原文:https://www.marsja.se/easiest-data-cleaning-method-using-python-pandas-pyjanitor/ 
译者:野生大熊猫
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40029
 
406 次点击