选自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()
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()
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