日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas0.25来了,别错过这10大好用的新功能

發(fā)布時間:2024/9/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 起,pandas 只支持 Python 3.53 及以上版本了,不再支持 Python 2.7,還在使用 Python 2 的朋友可要注意了,享受不了新功能了,不過,貌似用 Python 2 做數(shù)據(jù)分析這事兒估計已經(jīng)絕跡了吧!



  • 下一版 pandas 將只支持 Python 3.6 及以上版本了,這是因為 f-strings 的緣故嗎?嘿嘿。



  • 徹底去掉了 Panel,N 維數(shù)據(jù)結(jié)構(gòu)以后要用?xarray?了。說起來慚愧,呆鳥還沒用過 Panel 呢,它怎么就走了。。。。



  • read_pickle()?與?read_msgpack(),只向后兼容到 0.20.3。上一篇文章剛介紹過?read_pickle(),它就也要離我們而去了嗎?-_-||

  • 看完了這四大警告,咱們再看下 0.25 帶來了哪些新東西。

    二、新增功能

    1. Groupby 的命名聚合(Named Aggregation)


    這可是個新功能,能直接為指定的聚合輸出列命名。先創(chuàng)建一個 DataFrame 示例。
    命名聚合示例,居然還支持中文誒!不過,這里是為了演示清晰才寫的中文變量名,平時,該用英文還是要用英文的。
    這么寫看起來還是有些繁瑣,很不 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 版有一個黑科技,以 list 方式向?agg()?函數(shù)傳遞多個 lambda 函數(shù)。為了減少鍵盤敲擊量,真是無所不用其極啊!




    0.25 版前,這樣操作會觸發(fā)?SpecificationError。

    觸發(fā) SpecificationError
    這個功能也有個小遺憾,多 lambda 函數(shù)的輸出沒有像命名聚合那樣可以自定義命名,還要后面手動修改,有些不方便,不知道是我沒找到,還是真沒有……


    3. 優(yōu)化了 MultiIndex 顯示輸出


    MultiIndex?輸出的每行數(shù)據(jù)以 Tuple 顯示,且垂直對齊,這樣一來,MultiIndex?的結(jié)構(gòu)顯示的更清晰了。

    之前,是這樣的

    現(xiàn)在,是這樣的

    真是貨比貨得扔,以前沒感覺,現(xiàn)在一比較,有沒有覺得大不相同呢?

    4. 精簡顯示 Series 與 DataFrame


    超過 60 行的 Series 與 DataFrame,pandas 會默認(rèn)最多只顯示 60 行(見?display.max_rows?選項)。這種設(shè)置依然會占用大量垂直屏幕空間。因此,0.25 版引入了?display.min_rows?選項,默認(rèn)只顯示 10 行:
    • 數(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


    json_normalize() 支持按層級(level)讀取,增加了?max_level?控制參數(shù)。

    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 以前專門有?SparseDataFrame(),生成稀疏矩陣,0.25 以后,這個函數(shù)被廢棄了,改成?pd.DataFrame?里的?pd.SparseArray()?了,函數(shù)統(tǒng)一了,但是要多敲幾下鍵盤了。
    0.25 以前是這樣的:0.25 以后是這樣的:輸出的結(jié)果都是一樣的:


    8. 對 DataFrame Groupby 后,Groupby.apply 對每組只處理一次



    有沒有想到,0.25 以前輸出的結(jié)果居然是這樣的:

    0.25以前
    0.25以后
    這樣才正常嘛~~!

    9. 用 Dict 生成的 DataFrame,終于支持列排序啦


    以前是亂序的,全憑 pandas 的喜好:


    現(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。