Pandas 更新至 2.1.0 版本
数据科学实战
共 4637字,需浏览 10分钟
· 2023-09-06
目前 pandas 在 20230830 发布其 2.1.0 版本 ,该版本相较于在 20230628 的 2.0.3 版本还是有较多的改动及提升。本次主要列出需要关注的重点,更多请查看 pandas 更新说明!
Pandas 发布说明主要组成部分
Pandas 的发布说明(Release Notes)是由多个部分组成的,每个部分都描述了在新版本中进行的一些主要更改。以下是这些部分的一般结构:
-
What's New:这部分列出了新版本中的所有新功能和改进。这些可能包括新的函数、方法或类,或者现有功能的重大改进。每个新功能或改进都会有一个简短的描述,通常还会附带一个链接,链接到具体的 GitHub 问题或请求,以便读者可以获取更详细的信息。 -
Enhancements:这部分详细列出了所有的增强功能。增强功能通常包括对现有功能的改进,例如性能提升、新的参数选项等。 -
Bug Fixes:这部分列出了在新版本中修复的所有已知错误。每个错误修复都会有一个描述,解释了错误的性质以及修复的结果。像其他部分一样,每个错误修复通常都会链接到相关的 GitHub 问题。 -
Breaking Changes:这部分列出了所有可能影响现有代码行为的更改。这些更改可能包括函数或方法的签名更改、默认行为的更改等。对于每个破坏性更改,发布说明都会解释更改的原因,以及如果需要的话,如何修改现有代码以适应这些更改。 -
Deprecations:这部分列出了所有已弃用的功能。当一个功能被弃用时,这意味着它在未来的某个版本中将被删除。弃用通知旨在给开发人员提供时间来更新他们的代码,以避免在功能被删除时出现问题。 -
Version Summary:这部分提供了新版本的概述,包括新版本中的主要更改、修复的错误数、关闭的 GitHub 问题数等。 -
Contributors:这部分主要会列出所有对此次版本升级做出贡献的作者昵称。
主要改动
-
本次 pandas 2.1.0 版本开始,主要支持 Python 3.9 及以上版本,对于用于较低版本的开发者建议尽快更新 -
pandas 3.0 版本开始会默认支持 PyArrow,即后续支持的数据类型以 PyArrow 支持的为准,此项改动将较大的提升性能 -
对 pandas.DataFrame.map() 和 pandas.DataFrame.stack() 方法有较大改动。其中 pandas.DataFrame.map() 是新增的,主要是替换原来的 pandas.DataFrame.applymap() 方法。而对 pandas.DataFrame.stack() 则是重新实现该方法,新增 future_stack 参数
重点关注
pandas 2.1.0 弃用了在类似 setitem 的 Series 操作中的静默类型转换:在 Series(或DataFrame列)的类似 setitem 的操作中,静默进行的类型转换已被弃用,并显示警告。受影响的操作示例包括:
ser.fillna('foo', inplace=True)
ser.where(ser.isna(), 'foo', inplace=True)
ser.iloc[indexer] = 'foo'
ser.loc[indexer] = 'foo'
df.iloc[indexer, 0] = 'foo'
df.loc[indexer, 'a'] = 'foo'
ser[indexer] = 'foo'
示例
在 pandas 2.1.0 版本之前
In [1]: ser = pd.Series([1, 2, 3])
In [2]: ser
Out[2]:
0 1
1 2
2 3
dtype: int64
In [3]: ser[0] = 'not an int64'
In [4]: ser
Out[4]:
0 not an int64
1 2
2 3
dtype: object
其默认支持将数据类型转换为 object,以支持 int64 和 str 共存!
而在 pandas 2.1.0 及以后的版本中:
In [1]: ser = pd.Series([1, 2, 3])
In [2]: ser
Out[2]:
0 1
1 2
2 3
dtype: int64
In [3]: ser[0] = 'not an int64'
FutureWarning:
Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas.
Value 'not an int64' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.
In [4]: ser
Out[4]:
0 not an int64
1 2
2 3
dtype: object
必须做显示的类型转换,否则就会出现警告或者报错。显示类型转换的方式可以参考主要如下:
-
转换为 object 类型
In [21]: ser = pd.Series([1, 2, 3])
In [22]: ser = ser.astype('object')
In [23]: ser[0] = 'not an int64'
In [24]: ser
Out[24]:
0 not an int64
1 2
2 3
dtype: object
-
转换为 float64 类型
In [25]: ser = pd.Series([1, 2, 3])
In [26]: ser = ser.astype('float64')
In [27]: ser[0] = 1.1
In [28]: ser
Out[28]:
0 1.1
1 2.0
2 3.0
dtype: float64
可以根据自己的需求来显式转换数据类型,以防止出现不可预料的错误!
"object"类型可以包含各种Python对象,如字符串、列表、字典、函数等。由于"object"类型是一种通用的类型,它在执行某些操作时可能会有一些限制,因为Pandas无法对其中的具体数据类型进行优化。
参考资料
-
更新说明地址:https://pandas.pydata.org/docs/whatsnew/v2.1.0.html
评论
金融研究(更新) | 使用Python构建关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
词向量(更新) | 使用MD&A2001-2022语料训练Word2Vec模型
buTips: 公众号推送后内容只能更改一次,且只能改20字符。 如果内容出问题,或者想更新内容, 只能重复推送。 为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-03-24-load-w2v-and-expand-your-concpe
大邓和他的Python
0
IntelliJ IDEA 2024 首个大版本发布,好用到爆!
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。JetBrains 为多款 IDE 发布了 2024 年度首个大版本更新 (2024.1),包括 IntelliJ IDEA 、WebSt
Java架构师社区
0
怎么才能用pandas删除第一列第0行?
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤乡书不可寄,秋雁又南回。大家好,我是皮皮。一、前言前几天在Python白银交流群【unswervingly】问了一个Pandas处理的问题,提问截图如下:问题截图如下:二、实现过程这里【dcpeng】给了一个思
IT共享之家
0
Llama 3恐怖如斯,400B+版本即将到来!还有文生图Imagine Flash三步成图!
点蓝色字关注“机器学习算法工程师”设为星标,干货直达!简单总结一下:Llama 3包含8B和70B两个版本(包含预训练模型和Instruction tuning模型),性能相比Llama 2有明显提升,其中最大的模型Llama 3 70B人工评测超过GPT-3.5,未来还会推出参数量更大(400B+
机器学习算法工程师
10
PHP排名跌至历史最低 | TIOBE 4 月榜单发布
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁4 月 TIOBE 编程语言榜单已发布,一起来看看
源码共读
0
Go 从版本 1.0 到 1.22的性能变化
两年前,我在 1.2 到 1.18 的所有 Go 版本上比较了 GoAWK 解释器的两个不同基准。在本文中,我重新运行这些基准测试,添加缺少的 Go 版本(1.0 和 1.1)以及新版本(1.19 到 1.22)。我还包含了 Go 1.20 中添加的配置文件引导优化 (PGO) 的结果。我将引用我原
GoCN
10
ChatGPT、Gemini、Mistral、Grok 同时更新,GPT-4超过Claude-3-Opus,重回第一
4月10日,OpenAI宣布经过重大改进的 GPT-4 Turbo 模型现已在 API 中可用,并在 ChatGPT 中推出链接跳转友好:https://weekly.zhanglearning.com/第16期 AI 周刊1、OpenAI推出GPT-4 Turbo2、Ope
机器学习算法与Python实战
10