专栏首页CDA数据分析师读完本文,轻松玩转数据处理利器Pandas 1.0

读完本文,轻松玩转数据处理利器Pandas 1.0

作者:Tom Waterman

编译:李诗萌、魔王

本文转自:机器之心

2020 年 1 月 9 日 Pandas 1.0.0rc 版本面世,Facebook 数据科学家 Tom Waterman 撰文概述了其新功能。本文助你轻松玩转 Pandas 1.0。

常用数据科学库 Pandas 刚刚年满十二岁,现在已经发布到 1.0.0 版。首个 Pandas 1.0 候选版本显示出,现在的 Pandas 在遇到缺失值时会接收一个新的标量,遵循语义化版本控制(Semantic Versioning)形成了新的弃用策略,网站也经过了重新设计……

注意:Pandas 1.0.0rc 版本于 2020 年 1 月 9 日发布,之前的版本是 0.25。

最新发布的 Pandas 版本包含许多优秀功能,如更好地自动汇总数据帧、更多输出格式、新的数据类型,甚至还有新的文档站点。

完整的版本说明参见:https://dev.pandas.io/docs/whatsnew/v1.0.0.html

本文将用较通俗的方式介绍 Pandas 新版本,希望对大家有所帮助。

要使用新版 Pandas,用户可以用 pip 轻松升级。截至本文撰写时,Pandas 1.0 仍是候选版本,这意味着安装时需要明确指定版本号。

pip install --upgrade pandas==1.0.0rc0

当然,升级可能会破坏部分代码,因为这次发布的是主要版本,所以请务必小心。

这一版 Pandas 也不再支持 Python 2。要使用 1.0+版本的 Pandas,至少需要 Python 3.6+版本,所以请确认 pip 和 python 的版本是正确的。

$ pip --version
pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)$ python --version
Python 3.7.5

你可以根据下列代码确认一切正常,以及 Pandas 的版本正确。

1.0.0rc0

使用 DataFrame.info 更好地自动汇总数据帧

我最喜欢的新功能是改进后的 DataFrame.info (http://dataframe.info/) 方法。它使用一种可读性更强的格式,让数据探索过程变得更加容易。

>>> df = pd.DataFrame({
...:   'A': [1,2,3], 
...:   'B': ["goodbye", "cruel", "world"], 
...:   'C': [False, True, False]
...:})
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   A       3 non-null      int64
 1   B       3 non-null      object
 2   C       3 non-null      object
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes

支持 Markdown 表格作为输出格式

我第二喜欢的功能是用 DataFrame.to_markdown 方法,把数据帧导出到 Markdown 表格中。

>>> df.to_markdown()
|    |   A | B       | C     |
|---:|----:|:--------|:------|
|  0 |   1 | goodbye | False |
|  1 |   2 | cruel   | True  |
|  2 |   3 | world   | False |

这样可以通过 GitHub Gist,在 Medium 等处更容易地展示数据。

新数据类型:布尔值和字符串

Pandas 1.0 还实验性地引入了新的数据类型:布尔值和字符串。

由于这些改变是实验性的,因此数据类型的 API 可能会有轻微的变动,所以用户在使用时务必谨慎操作。不过,Pandas 推荐用户合理使用这些数据类型,在未来的版本中也将改善特定类型运算的性能,比如正则表达式匹配(Regex Match)。

默认情况下,Pandas 不会自动将你的数据强制转换为这些类型。但你可以修改参数来使用新的数据类型。

>>> B = pd.Series(["goodbye", "cruel", "world"], dtype="string")
>>> C = pd.Series([False, True, False], dtype="bool")
>>> df.B = B, df.C = C
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   A       3 non-null      int64
 1   B       3 non-null      string
 2   C       3 non-null      bool
dtypes: int64(1), object(1), string(1)
memory usage: 200.0+ bytes

注意现在的 Dtype 列是如何反映新数据类型 string 和 bool 的。

字符串数据类型最大的用处是,你可以从数据帧中只选择字符串列,这样就可以更快地分析数据集中的文本。

df.select_dtypes("string")

在此之前,你只能通过指定名称来选择字符串类型列。

更多有关新数据类型的说明,参见:https://dev.pandas.io/docs/user_guide/text.html?highlight=string。

弃用

新版本弃用了许多功能。不过最值得注意的是,从 DataFrameGroupBy 对象中选择列时,输入 key 列表或 key 元组的方法已被弃用。现在要用 item 列表,而非键列表。

另一个最常用的变动出现在 DataFrame.hist() 和 Series.his() 中。现在 figsize 没有默认值,要想指定绘图的大小,需要输入元组。

Bug 修复

新版本还修复了大量 bug,提高了数据分析的可信度。

此前,在遇到分类数据以外的值时,fillna() 会引发 ValueError。因此,它现在纳入 assert 来测试不一致,并处理异常。

另外,在将分类数据转换为整数时,也会产生错误的输出。特别是对于 NaN 值,其输出往往是错误的。因此,新版 Pandas 修复了这个 bug。

原文链接:https://towardsdatascience.com/top-features-of-pandas-1-0-26abff08d1b6

本文分享自微信公众号 - CDA数据分析师(cdacdacda)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 收藏 | 10个可以快速用Python进行数据分析的小技巧

    一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。

    CDA数据分析师
  • 李飞飞:我怎样走上AI研究之路

    李飞飞的最新角色是斯坦福大学新成立的“以人为本AI研究院”的联合主任,该研究院专注于机器学习潜在用途的研究和教育,目标是找到AI能够改善人们生活的方式。

    CDA数据分析师
  • 惊呆了!!!连佛教法师都开始利用大数据!!!

    核心提示:在全世界各文化与国度都在迅速应用互联网,并已然形成另一个世界——虚拟世界的时代,舆情领域正发生着媒介“隐喻”力量的制衡与博弈,佛教界应树立“舆情意识”...

    CDA数据分析师
  • 读完本文,轻松玩转数据处理利器Pandas 1.0

    常用数据科学库 Pandas 刚刚年满十二岁,现在已经发布到 1.0.0 版。首个 Pandas 1.0 候选版本显示出,现在的 Pandas 在遇到缺失值时会...

    机器之心
  • 一行代码,Pandas秒变分布式,快速处理TB级数据

    刚刚在Pandas上为十几KB的数据做好了测试写好了处理脚本,上百TB的同类大型数据集摆到了面前。这时候,你可能面临着一个两难的选择: 继续用Pandas?可能...

    量子位
  • Mysql 常用函数(33)- dayofmonth 函数

    https://www.cnblogs.com/poloyy/p/12890763.html

    小菠萝测试笔记
  • 深度残差网络 - Deep Residual Learning for Image Recognition

    CVPR2016 code: https://github.com/KaimingHe/deep-residual-networks

    用户1148525
  • 无需标注数据,利用辅助性旋转损失的自监督GANs,效果堪比现有最好方法

    本文作者提出了一种自检督方式的生成对抗网络,通过辅助性的旋转损失来达到目的。因为通常主流方法来生成自然图像都是通过条件GAN来完成,但是这就需要很多的标签数据。...

    AI科技大本营
  • 0576-6.1.0-Hive Comment中文乱码补充

    Fayson 在前面的文章《Hive表字段Comment中文乱码》中,介绍了在Hive中如何解决表字段中文注释乱码的问题,为了完善上篇文档,本文整理Hive表所...

    Fayson
  • Bluetooth4_3运行流程(连接发射器SN00000009)

    用户1733354

扫码关注云+社区

领取腾讯云代金券