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

2020 年 1 月 23 日 机器之心

选自Medium

作者: 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 的版本正确。

>>> import pandas as pd
>>> pd.__version__

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



文为机器之心编译,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content @jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
盘一盘 Python 系列 10 - Keras (上)
平均机器
5+阅读 · 2019年8月26日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Seeing What a GAN Cannot Generate
Arxiv
8+阅读 · 2019年10月24日
Single-frame Regularization for Temporally Stable CNNs
Learning Implicit Fields for Generative Shape Modeling
Arxiv
10+阅读 · 2018年12月6日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
4+阅读 · 2018年2月13日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
相关资讯
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
盘一盘 Python 系列 10 - Keras (上)
平均机器
5+阅读 · 2019年8月26日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Top
微信扫码咨询专知VIP会员