Pandas 2.0来了~

来源丨数据STUDIO

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

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

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

更快和更有效的内存操作

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

97f3e8733e91aa4bfab5514f728135ce.png

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

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

什么是Pyarrow?

43f96b567a46fc9f3c4d926deab05dc2.jpeg

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

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

6bb9ba7b352b6943be949256ddab3200.png

缺失值处理

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

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

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

写入时复制优化

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

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

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

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

bd96f27c98194c684ed297d3c9e0f054.png

索引

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

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

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

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

cbcf0132c088461ce0f17337d60e50f6.png

Pandas 2.0将更快

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

e2a82697bd7bc6d1ca729660642aa657.png

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

参考资料

[1]

Pandas: https://pandas.pydata.org/

[2]

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

万水千山总是情,点个 👍 行不行

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值