Pandas 1.0 新特性解析

在数据科学领域,Pandas库以其强大的数据处理能力而广受赞誉。根据StackOverflow的调查,Pandas是全球第四大最常用的库/框架。Pandas 1.0版本的发布带来了许多重大更新和新特性,本文将详细介绍这些变化,并提供代码示例以帮助理解。

Pandas 1.0 简介

数据分析是机器学习生命周期中的关键部分,它涉及检查数据、理解每个组成部分,并从手头的数据中生成有用的见解。深入理解数据将有助于在项目的各个方面,无论是机器学习竞赛还是关键的业务决策。

有许多工具可以帮助分析和理解数据,例如MS Excel、SAS、Python、R等。个人更喜欢Python,并且自从开始在数据科学领域工作以来,一直在使用它进行数据分析和可视化。

Pandas库的设计使得数据操作、读取、聚合和基本可视化变得快速而简单。如果是Pandas的常规用户,会注意到Pandas 1.0。

如果使用的是旧版本的Python,请注意:这个最新的Pandas版本不再支持Python 2.x。Pandas 1.0需要Python 3.6或更高版本!

python --version

可以使用上述命令检查当前的Python版本。如果系统中安装的是带有2.x名称的旧版本,必须在安装新版本的Pandas之前升级它。

$ pip install --upgrade pandas==1.0.0rc0

要检查安装是否成功,使用命令:

$ pip show pandas

输出将显示Pandas的名称、版本和摘要。

Pandas 1.0 的主要新特性

Pandas 1.0版本中有一些非常令人兴奋的新增功能和许多错误修复。可以在上查看完整的增强功能和错误修复列表。在本文中,列出了一些主要功能以及它们在数据分析过程中的用途。

这个特性真的引起了注意!在数据中,不同类型的变量或特征有不同的分析技术。因此,在深入数据分析过程之前,正确识别正在处理的变量类型非常重要。

在Pandas的早期版本中,对整数和浮点值有不同的数据类型(分别是int和float),而其他所有内容都归入'object'数据类型。这意味着字符串或文本也将被归类为对象。

tweets_data.dtypes

输出将显示id为int64,label和tweet为object。这是因为Pandas只有一个数据类型用于两者——类别和字符串。不再是这样了!

Pandas 1.0引入了专用于字符串的数据类型。可以使用astype()函数轻松更改数据类型:

tweets_data['tweet'] = tweets_data['tweet'].astype("string")

现在,当使用select_dtypes()函数时,可以轻松分离和分析类别和基于文本的特征:

tweets_data.select_dtypes("string")

经常从不同的来源提取数据,可能会有缺失或不明确的值,表示为“不可用”或“缺失”。通常,这些值会被替换为np.nan、None或pd.NaT,具体取决于数据类型。

Pandas 1.0引入了一个新的“Singleton”值来表示标量缺失值——pd.NA。这将用于所有数据类型——整数、浮点数,甚至是对象。以下是如何使用它的方法:

pd.NA

这可以用于任何变量,无论其数据类型如何。尽管pd.NA与np.nan和pd.NaT一样用于表示缺失值,但在某些算术操作中它的行为不同(例如,当np.nan与整数比较时,输出是False):

np.nan > 1

但当使用新特性pd.NA进行比较时,它将返回一个空值:

pd.NA > 1

数据分析过程中,都曾使用过info()和describe()函数来生成Pandas数据框架的简洁摘要。info()函数简单地返回每个列的数据类型和每个列中的值的计数。

使用Pandas 1.0,info()函数返回的是以表格形式的详细信息,包括索引值和标题。输出更加有组织和易读。

Pandas 1.0为数据框架提供了Markdown友好的格式。这在通过gists显示表格时非常方便。要将任何数据框架转换为Markdown表格格式,可以使用新引入的to_markdown()函数:

df.to_markdown()

注意:要使用to_markdown()函数,必须在系统中安装了tabulate。可以简单地使用pip进行安装:

$ pip install tabulate

Pandas是数据分析的基本工具,其第一个主要版本包括一些非常有趣的特性和增强功能!尝试这些新特性并将其带给社区是一次很棒的体验。

可以在这里查看完整的功能和错误修复列表——。在评论区告诉最喜欢的特性。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485