Pandas0.25来了,别错过这10大好用的新功能
生活随笔
收集整理的這篇文章主要介紹了
Pandas0.25来了,别错过这10大好用的新功能
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
呆鳥云:“7 月 18 日,Pandas 團(tuán)隊推出了 Pandas 0.25 版,這就相當(dāng)于 Python 3.8 啦,Python 數(shù)據(jù)分析師可別錯過新版的好功能哦。”安裝 0.25 版:pip install pandas,就可以了。
下面和大家一起看看新版 pandas 都有哪些改變。
一、四個置頂?shù)木?#xff01;
看完了這四大警告,咱們再看下 0.25 帶來了哪些新東西。
二、新增功能
1. Groupby 的命名聚合(Named Aggregation)
命名聚合示例,居然還支持中文誒!不過,這里是為了演示清晰才寫的中文變量名,平時,該用英文還是要用英文的。
這么寫看起來還是有些繁瑣,很不 Pythonic,好在 pandas 提供了更簡單的寫法,只需傳遞一個 Tuple 就可以了,Tuple 里的第一個元素是指定列,第二個元素是聚合函數(shù),看看下面的代碼,是不是少敲了好多下鍵盤:
這里還可以進(jìn)一步偷懶,只寫?min?或?max,連單引號都不寫了。Pandas 提供了一種叫?pandas.NameAgg?的命名元組(namedtuple),但如上面的代碼所示,直接使用 Tuple 也沒問題。
這兩段代碼的效果是一樣的,結(jié)果都如下圖所示。
命名聚合取代了已經(jīng)廢棄的?dict-of-dicts?重命名方式,看了一下,之前的操作還真是挺復(fù)雜的,這里就不贅述了,有興趣回顧的朋友,可以自己看下用 dict 重命名 groupby.agg()?輸出結(jié)果(已廢棄)?這部分內(nèi)容。
命名聚合還支持 Series 的 groupby 對象,因為 Series 無需指定列名,只要寫清楚要應(yīng)用的函數(shù)就可以了。
更多有關(guān)命名聚合的介紹,詳見官方文檔?Named aggregation?。
2. Groupby 聚合支持多個 lambda 函數(shù)
0.25 版前,這樣操作會觸發(fā)?SpecificationError。
觸發(fā) SpecificationError
這個功能也有個小遺憾,多 lambda 函數(shù)的輸出沒有像命名聚合那樣可以自定義命名,還要后面手動修改,有些不方便,不知道是我沒找到,還是真沒有……
3. 優(yōu)化了 MultiIndex 顯示輸出
之前,是這樣的
現(xiàn)在,是這樣的
真是貨比貨得扔,以前沒感覺,現(xiàn)在一比較,有沒有覺得大不相同呢?
4. 精簡顯示 Series 與 DataFrame
- 數(shù)據(jù)量小的 Series 與 DataFrame, 顯示?max_row?行數(shù)據(jù),默認(rèn)為 60 行,前 30 行與后 30 行;
- 數(shù)據(jù)量大的 Series 與 DataFrame,如果數(shù)據(jù)量超過?max_rows, 只顯示?min_rows?行,默認(rèn)為 10 行,即前 5 行與后 5 行。
最大與最小行數(shù)這種雙重選項,允許在數(shù)據(jù)量較小時,比如數(shù)據(jù)量少于 60 行,顯示全部數(shù)據(jù),在數(shù)據(jù)量較大時,則只顯示數(shù)據(jù)摘要。
要去掉?min_rows?的設(shè)置,可以把該選項設(shè)置為?None:
pd.options.display.min_rows = None
min_rows
在 VSCode 里顯示正常,只顯示了前 5 行與后 5 行,但貌似 Jupyter Notebook 6.0 目前貌似還不支持這個設(shè)置,還是顯示前 30 行與后 30 行。圖片太長,這里就不截圖了。如果 Jupyter 可以的話,請告訴我。
5. json_normalize() 支持 max_level
0.25 以前是這樣的,所有層級都讀取出來了:
0.25 以后是這樣的,可以通過?max_level?參數(shù)控制讀取的 JSON 數(shù)據(jù)層級:
6. 增加 explode() 方法,把 list “炸”成行
Series 與 DataFrame 增加了 explode() 方法,把 list 形式的值轉(zhuǎn)換為單獨的行。
以后再拆分這樣的數(shù)據(jù)就簡單多了。具體官方文檔說明詳見?section on Exploding list-like column。
7. SparseDataFrame 被廢棄了
0.25 以前是這樣的:0.25 以后是這樣的:輸出的結(jié)果都是一樣的:
8. 對 DataFrame Groupby 后,Groupby.apply 對每組只處理一次
有沒有想到,0.25 以前輸出的結(jié)果居然是這樣的:
0.25以前
0.25以后
這樣才正常嘛~~!
9. 用 Dict 生成的 DataFrame,終于支持列排序啦
現(xiàn)在,我的字典終于我做主了!
10. Query() 支持列名空格了
用上面的?data?生成一個示例 DataFrame,注意列名是有空格的。
現(xiàn)在用反引號(`)括住列名,就可以直接查詢了:
好了,本文就先介紹 pandas 0.25 的這些改變,其實,0.25 還包括了很多優(yōu)化,比如,對 DataFrame GroupBy 后?ffill,?bfill?方法的調(diào)整,對類別型數(shù)據(jù)的?argsort?的缺失值排序,groupby保留類別數(shù)據(jù)的數(shù)據(jù)類型等,如需了解,詳見官方文檔?What's new in 0.25.0。
配套的 Jupyter Notebook 文件鏈接:https://github.com/jaystone776/pandas_answered/blob/master/10_New_Features_in_Pandas_0.25.ipynb。
總結(jié)
以上是生活随笔為你收集整理的Pandas0.25来了,别错过这10大好用的新功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我是怎么保存公众号历史文章合集到本地的?
- 下一篇: 李宏毅机器学习完整笔记发布,AI界「最热