Pandas 2.0来了~

简介: Pandas 2.0来了~

前言


Pandas[1]是一个用于处理数据的Python库,在Python开发者中非常流行。相信你已经对他非常熟悉了。

随着现在数据量越来越多,pandas的局限性也日渐凸显,在处理大数据时非常恼火,从而选择更加合适的工具,如pyspark等大数据处理框架。

而 Pandas 2.0 也是朝着这个方向迈出的一步,接下来我们一起聊一聊Pandas增加和改进的内容。


正文


更快和更有效的内存操作


本次最大的亮点可谓是他们在后台增加了对pyarrow的支持,甚至被定义为一场革命(revolution)。

10.png


pyarrow后端是pandas 2.0的一个新功能,它允许用户使用Apache Arrow作为pandas DataFrames和Series的替代数据存储格式。

这意味着当你在pandas 2.0中读或写Parquet文件时,它将默认使用pyarrow来处理数据,从而使操作更快、更节省内存。


什么是Pyarrow?


11.jpg

Pyarrow是一个提供列式内存格式的库,它是一种组织数据的方式,使其更容易读取和并行处理。

总之,在pandas 2.0中使用pyarrow后端可以使数据操作更快、更节省内存,尤其是在处理大型数据集时。

12.png


缺失值处理


PyArrow更适合于表格数据,使其能够轻松地存储字符串,最重要的是,使空值处理也更容易。

先前Pandas依靠NumPy来保存表格数据,例如字符串、数字,也包括更复杂的数据。然而,NumPy也有其局限性,从Marc Garcia[2]的文章中可以看到,NumPy不支持字符串和缺失值。因此,对于缺失的数字,需要使用一个特殊的数字或NaN。这意味着对于每一种数据类型,缺失值的实现都很复杂,处理起来也很棘手。

而这些问题在Pandas2.0将会完美解决,在PyArrow中处理缺失数据时,在数据数组的旁边会有第二个数组,表示一个值是否存在,使得对空值的处理更加简单明了。


写入时复制优化


这是一种内存优化技术,类似于Spark执行代码的方式,在pandas中用来提高性能,减少处理大数据集时的内存使用。

当复制一个pandas对象,比如DataFrame或Series,pandas不是立即创建一个新的数据副本,而将创建一个对原始数据的引用,并推迟创建一个新的副本,直到以某种方式修改数据。

这意味着,如果你有相同数据的多个副本,它们都可以引用相同的内存,直到你对其中一个进行修改。这可以大大减少内存的使用,提高性能,因为你不需要对数据进行不必要的复制。

总的来说,写入时复制是一种强大的优化技术,可以帮助你更有效地处理大型数据集,并减少内存。

13.png


索引


更好的索引、更快的访问和计算

以前,pandas只支持int64、uint64和float64类型。

而在Pandas 2.0中,Index将支持所有NumPy的数字类型,包括int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32和float64。

因此,以前创建64位索引的操作现在可以创建较低位数的索引,如32位索引。

14.png


Pandas 2.0将更快


PyArrow的引入将提大地提高了pandas的性能。这里提供了一个例子,对于一个250万行的字符串系列,在笔记本电脑上使用PyArrow比NumPy快31.6倍。

15.png

对于pandas重度依赖者来说,这无疑是个非常棒的消息,让我们一起期待下吧~

来源:数据STUDIO


参考资料


[1]Pandas: https://pandas.pydata.org/

[2]Marc Garcia: https://datapythonista.me/blog/pandas-20-and-the-arrow-revolution-part-i 


-END-


相关文章
|
6月前
|
前端开发
SpringBoot2.3.1集成Knife4j接口文档
SpringBoot2.3.1集成Knife4j接口文档
527 57
|
前端开发
umi webpack配置图片资源转base64
umi webpack配置图片资源转base64
|
自然语言处理 IDE 测试技术
通义灵码怎么样?分为哪些版本,看看基础能力多少分?
通义灵码是一款基于通义大模型的智能编码辅助工具,提供实时代码续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释等功能。
|
Java Shell API
实战教程:如何将自己的Python包发布到PyPI上
实战教程:如何将自己的Python包发布到PyPI上
3783 0
实战教程:如何将自己的Python包发布到PyPI上
|
存储 数据采集 运维
日志服务(SLS)测评
在本次测评中,我将对日志服务SLS产品进行全面评估,主要从以下四个方面展开。首先,我将进行功能测试,基于之前参加的两次训练实验,对其功能进行评估。其次,我将与其他数据分析&可观测性产品进行比较,以了解SLS的优势和差异。然后,我将进行成本与收益分析,探讨SLS作为一站式的可观测数据存储分析平台所带来的成本节约和收益提升。最后,我将对SLS进行简要总结,并提出一些期待,希望能够为用户提供有用的参考信息。
991 58
|
jenkins Linux 网络安全
使用Jenkins通过SSH插件远程控制主机执行脚本
使用Jenkins通过SSH插件远程控制主机执行脚本
824 1
|
编解码 并行计算 计算机视觉
jetson-ffmpeg对视频硬编解码实测记录
jetson-ffmpeg对视频硬编解码实测记录
774 0
该丢弃 HttpClient 了,这款轻量级 HTTP 客户端 API 框架很强
一般情况下是后端提供接口,前端调用,解决需求,但是有的时候为了方便,复用别人的接口(网上的,公共的第三方接口(短信、天气等)),就出现了后端调用后端接口的情况。 此外,因为业务关系,要和许多不同第三方公司进行对接。这些服务商都提供基于http的api,但是每家公司提供api具体细节差别很大。
|
安全 数据安全/隐私保护 虚拟化
❤️【保姆级安装教程】❤️使用VMware Workstation搭建Windows11系统上手体验,结尾有趣事
❤️【保姆级安装教程】❤️使用VMware Workstation搭建Windows11系统上手体验,结尾有趣事
784 0
|
SQL 存储 自然语言处理
Sharding-JDBC 的基本用法和基本原理
Sharding-JDBC 的基本用法和基本原理

热门文章

最新文章