要比一般的熊更聪明就需要知道的一切
Pandas开发团队刚刚发布了第一个Pandas1.0.0版本的候选版本。 在本文中,我将回答您的紧迫问题,讨论主要更改,并向您展示如何立即开始使用新版本。
Your average bear
Pandas
Pandas是最受欢迎的Python库,用于清理,浏览和处理数据。 它将命名行和列添加到NumPy的ndarray数据结构中。 并且它添加了许多便利的方法,使处理数据更加容易。 熊猫是Python成为数据科学家和数据工程师的主导语言的重要原因。
我们走吧!
我们正在谈论的是1.0。 这有很多重大变化吗?
并不是的。 1.0标签并不意味着与2020年1月22日的当前稳定版本0.25.3会有很大的不同。您将看到,变化不大。
1.0版本也并不表示该语言已达到主要的成熟点。 Pandas是一个相当稳定的库,已经在生产代码中使用了多年。 Wes McKinney于2008年开始使用该库。GitHub表示,截至本文撰写时,它已在约170,000个GitHub存储库中使用。
1.0的更改在短期内可能会带来更多的复杂性,但是从长远来看,它们为该语言奠定了更好的基础。
A good foundation is a gift
新功能
除了通常的错误修复和较小的API清理外,pandas 1.0.0还引入了一些主要功能。
pd.NA
在pandas 0.25中,根据列的dtype,DataFrame可以具有三个不同的值-np.nan,None或pd.NaT-表示丢失的数据。
许多人面临的具有缺失值的最大障碍是,具有缺失值的整数列会自动转换为float。 kes
目前的状况主要是由于底层NumPy库的功能所致。 为了改善这种状况,熊猫开发团队创造了一个新的价值,以代表几种dtypes的缺失数据。 如即将发布的1.0文档中所述:
从pandas 1.0开始,可以使用实验性的pd.NA值(单例)来表示标量缺失值。 目前,它在可为空的整数,布尔值和专用字符串数据类型中用作缺失值指示符。
pd.NA的目标是[提供]可以在各种数据类型上一致使用的"缺失"指示器(而不是np.nan,None或pd.NaT,具体取决于数据类型)。
从长远来看,缺少数据的单个值并避免将缺少数据的整数列自动转换为浮点数听起来不错! 在短期内,它还会创造更多要学习和记住的东西。
使用新的pd.NA的一个陷阱是,您无法将其直接与布尔条件下的值进行比较。 所以没有pd.NA ==。 相反,可以使用df.isna()返回布尔掩码,以代替DataFrame中缺少的值。
而且,pd.NA通过逻辑操作传播的方式与熊猫中其他丢失的数据值不同。 pd.NA遵循三值逻辑规则-与R和SQL相似。 例如,如果pd.NA的or条件中的值之一为True,则结果为True,并且pd.NA不会传播。 这是三值逻辑的备忘单:
有关更多讨论,请参阅文档。
让我们看一下可以容纳pd.NA的三种dtype。
可空整数Dtype
如果要使用新的pd.NA并避免将int强制转换为浮点型,则现在必须指定特殊的可为空的整数dtype Int64-注意大写字母I。此dtype与您知道的标准int64 NumPy dtype不同 和爱。 ❤️
这是制作带有整数dtype列(以通常的别名导入pandas和NumPy)的DataFrame的旧方法:
pd.DataFrame([1, 2, np.nan])
结果是:
注意自动类型转换为浮点型。
这是创建可处理pd.NA的列的方法。
pd.DataFrame([1, 2, np.nan], dtype="Int64")
在创建Series或DataFrame时只需指定dtype =" Int64"即可获得可为空的整数dtype。
该列仍具有整数! 还有新的。
关于int64和Int64的棘手问题-对于熊猫版本,只有一个大写字母I,而对于现有NumPy版本,只有一个小写字母i似乎会引起一些混乱。 ☹️
Confused?
布尔值dtype
如果引入缺少的值,则布尔dtype列将转换为对象dtype。 如果要使用缺少pd.NA值的布尔整数列,请使用dtype布尔值指定该列。
方法如下:
pd.DataFrame([True, False, np.nan], dtype="boolean")
同样,这很酷,但是布尔型dtype可能会与现有的bool dtype混淆。
我们来看一个新的字符串dtype。
New string
字符串dtype
至少乍一看,一种新的,更直观的文本数据类型对我来说是一个好主意。 目前,对象dtype是文本数据和其他任何不属于另一类别的数据的统称。
字符串dtype使用pd.NA表示缺少的值,节省了内存,并传达您只希望列中的文本值。 现在,您需要指定所需的内容。 具体操作如下:
pd.DataFrame(['a', 'b'], dtype='string')
这些更改的短期缺点是,现在缺少值和dtypes的细微差别更加明显。 ☹️好的方面是,熊猫已经朝着更直观地处理整个API中缺失值的方向迈出了一大步。
值得注意的其他变化
· 该文档具有漂亮的外观,并新增了有关扩展到大型数据集的部分。
· 大熊猫团队将开始使用语义版本控制的宽松变体来管理弃用,API兼容性和版本编号。
· 您可以使用to_markdown()将DataFrame输出为Markdown表。
· pandas.util.testing模块已被弃用。 我喜欢用它快速制作具有各种数据类型的DataFrame。 但是,您可以通过其他几种方法来创建这样的DataFrames,但似乎并没有得到广泛的使用。 从好的方面来说,这是一门少学的东西,我可以将其从即将出版的熊猫书中删除。
· 熊猫1.0.0支持Python 3.6.1及更高版本。
Change
如何安装候选版本?
使用pip安装候选版本的方法如下:
pip install --pre pandas==1.0.0rc0
您绝对不希望在主环境中安装候选版本。 我建议您使用Python的内置venv创建虚拟环境。 因此,要使用Python 3.8创建虚拟环境,您将:
python3.8 -m venv my_envsource my_env/bin/activate
这是在Conda上安装熊猫和Jupyter Lab的方法:
conda create -n pandascfj -c conda-forge/label/rc -c conda-forge pandas==1.0.0rc0 jupyterlab
不要尝试将候选发布版本安装到常规的conda环境中。 您可能会看到导致安装失败的各种程序包冲突。 希望在1.0.0正式发布时,这些冲突能够得到解决。
说到…
1.0.0正式版本何时发布?
截至撰写本文时,1.0.0的截止日期是2020年2月1日。很快,所以我们看看它是否发布。
向不断努力改善熊猫的人们大声呼喊! 谢谢!
忠告
如果您喜欢前沿技术,请查看pandas 1.0.0的候选发布者。 否则,请等待几周以等待正式的1.0.0版本。
如果您一直在关注最新的Pandas版本,并且对弹出的警告进行了处理,那么1.0版本应该不会太粗糙。 但是,您在以前的Pandas版本中看到的许多警告现在都会出错,因此请小心。
如果您还不了解Vanilla Python,请阅读《 Memorable Python》。
总结
我希望您发现此Pandas1.0指南有用。 如果您这样做了,请在您喜欢的社交媒体上分享它,以便其他人也可以找到它。
(本文翻译自Jeff Hale的文章《What's New in Pandas 1.0? 》,参考:https://towardsdatascience.com/whats-new-in-pandas-1-0-ffa99bd43a58)
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/2370106.html