帶你一起盤點,Pandas1.0的主要功能
注意:Pandas 1.0.0rc已于1月9日發(fā)布,先前的版本為0.25。
Pandas首個全新主要發(fā)行版本包含許多重要功能:更完善的數(shù)據(jù)框自動匯總、更全面的輸出格式、全新的數(shù)據(jù)類型以及文檔站點。
在全新的文檔站點上,可以找到完整的發(fā)行說明,但小芯認(rèn)為,技術(shù)含量較低的概述也會有所幫助。
用戶可以使用 pip升級Pandas,以便使用其新版本。在撰寫本文時,Pandas1.0仍然是候選版本,這意味著要安裝Pandas1.0需要明確指定其版本。
- pip install --upgradepandas==1.0.0rc0
當(dāng)然,更新可能會破壞某些代碼,因為這是主要版本的發(fā)布,因此請務(wù)必小心! 此版本的Pandas不再支持Python 2。運(yùn)行Pandas 1.0+至少需要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
用戶可以確認(rèn)一切正常,并且Pandas使用的是正確版本。
- >>> import pandas as pd
- >>> pd.__version__
- 1.0.0rc0
使用DataFrame.info更好的自動匯總
筆者最喜歡的新功能是優(yōu)化之后的DataFrame.info法?,F(xiàn)在,它使用了更具可讀性的格式,從而使數(shù)據(jù)探索過程更加容易。
- >>> 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 法將數(shù)據(jù)幀導(dǎo)出到Markdown表中。
- >>> df.to_markdown()
- | | A | B | C |
- |---:|----:|:--------|:------|
- | 0 | 1 | goodbye | False |
- | 1 | 2 | cruel | True |
- | 2 | 3 | world | False |
這樣一來,通過github gists在Medium等地方顯示表格更加便捷。
booleans and strings的新數(shù)據(jù)類型
來源:Pexels
Pandas1.0還為booleans and strings引入了實驗數(shù)據(jù)類型。
由于這些更改是實驗性的,數(shù)據(jù)類型的API可能會稍有更改,因此應(yīng)謹(jǐn)慎使用。但是Pandas建議在合理的地方使用這些數(shù)據(jù)類型,將來的版本將完善諸如regex匹配之類的特定于類型的操作性能。
默認(rèn)情況下,Pandas不會自動將數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為這些類型。但是,如果明確指示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列現(xiàn)在如何反應(yīng)新類型的string和bool。
新字符串dtype最實用的優(yōu)勢在于,可以從DataFrame中選擇string列。這樣可以更快地僅對數(shù)據(jù)集的文本成分進(jìn)行分析。
- df.select_dtypes("string")
以前,只能通過顯式使用其名稱來選擇string類型列。
從今天開始,掌握Pandas 1.0的主要功能,全新優(yōu)化開啟使用吧~