欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas0.25來了千萬別錯(cuò)過這10大好用的新功能

 更新時(shí)間:2019年08月07日 11:37:19   作者:濤哥聊Python  
這篇文章主要介紹了Pandas0.25來了千萬別錯(cuò)過這10大好用的新功能,都有哪些新功能,文中給大家詳細(xì)介紹,需要的朋友可以參考下

呆鳥云:“7 月 18 日,Pandas 團(tuán)隊(duì)推出了 Pandas 0.25 版,這就相當(dāng)于 Python 3.8 啦,Python 數(shù)據(jù)分析師可別錯(cuò)過新版的好功能哦?!?/p>

安裝 0.25 版: pip install pandas ,就可以了。

下面和大家一起看看新版 pandas 都有哪些改變。

一、四個(gè)置頂?shù)木妫?/strong>

從 0.25 起,pandas 只支持 Python 3.53 及以上版本了,不再支持 Python 2.7,還在使用 Python 2 的朋友可要注意了,享受不了新功能了,不過,貌似用 Python 2 做數(shù)據(jù)分析這事兒估計(jì)已經(jīng)絕跡了吧!

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

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

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

看完了這四大警告,咱們?cè)倏聪?0.25 帶來了哪些新東西。

二、新增功能

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

這可是個(gè)新功能,能直接為指定的聚合輸出列命名。先創(chuàng)建一個(gè) DataFrame 示例。

animals = pd.DataFrame({ '品種' : [ '貓' , '狗' , '貓' , '狗' ],   

'身高' : [ 9.1 , 6.0 , 9.5 , 34.0 ],   

'體重' : [ 7.9 , 7.5 , 9.9 , 198.0
]})

animals

命名聚合示例,居然還支持中文誒!不過,這里是為了演示清晰才寫的中文變量名,平時(shí),該用英文還是要用英文的。

animals.groupby( '品種'
).agg(
最低=pd.NamedAgg(column=
'身高' , aggfunc= 'min' 
),
最高=pd.NamedAgg(column=
'身高' , aggfunc= 'max' 
),
平均體重=pd.NamedAgg(column=
'體重' 
, aggfunc=np.mean),
)

這么寫看起來還是有些繁瑣,很不 Pythonic,好在 pandas 提供了更簡(jiǎn)單的寫法,只需傳遞一個(gè) Tuple 就可以了,Tuple 里的第一個(gè)元素是指定列,第二個(gè)元素是聚合函數(shù),看看下面的代碼,是不是少敲了好多下鍵盤:

animals.groupby( '品種'
).agg(
最低=(
'身高' 
, min),
最高=(
'身高' 
, max),
平均體重=(
'體重' 
, np.mean),
)

這里還可以進(jìn)一步偷懶,只寫 minmax ,連單引號(hào)都不寫了。

Pandas 提供了一種叫 pandas.NameAgg 的命名元組( namedtuple ),但如上面的代碼所示,直接使用 Tuple 也沒問題。

這兩段代碼的效果是一樣的,結(jié)果都如下圖所示。

命名聚合取代了已經(jīng)廢棄的 dict-of-dicts 重命名方式,看了一下,之前的操作還真是挺復(fù)雜的,這里就不贅述了,有興趣回顧的朋友,可以自己看下 用 dict 重命名 groupby.agg() 輸出結(jié)果(已廢棄) 這部分內(nèi)容。

命名聚合還支持 Series 的 groupby 對(duì)象,因?yàn)?Series 無需指定列名,只要寫清楚要應(yīng)用的函數(shù)就可以了。

animals.groupby( '品種'
).身高.agg(
最低=min,
最高=max,
)

更多有關(guān) 命名聚合 的介紹,詳見官方文檔 Named aggregation 。

2. Groupby 聚合支持多個(gè) lambda 函數(shù)

0.25 版有一個(gè)黑科技,以 list 方式向 agg() 函數(shù)傳遞多個(gè) lambda 函數(shù)。為了減少鍵盤敲擊量,真是無所不用其極啊!

animals.groupby( '品種' ).身高.agg([ 
lambda x: x.iloc[ 0 ], lambda x: x.iloc[ -1 
]
])

animals.groupby( '品種' ).agg([
lambda x: x.iloc[ 0 ] - x.iloc[ 1 ],
lambda x: x.iloc[ 0 ] + x.iloc[ 1 
]
])

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

觸發(fā) SpecificationError

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

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

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

pd.MultiIndex.from_product([[ 'a' , 'abc' ], range( 500 )])

之前,是這樣的

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

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

4. 精簡(jiǎn)顯示 Series 與 DataFrame

超過 60 行的 Series 與 DataFrame,pandas 會(huì)默認(rèn)最多只顯示 60 行(見 display.max_rows 選項(xiàng))。這種設(shè)置依然會(huì)占用大量垂直屏幕空間。因此,0.25 版引入了 display.min_rows 選項(xiàng),默認(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ù)這種雙重選項(xiàng),允許在數(shù)據(jù)量較小時(shí),比如數(shù)據(jù)量少于 60 行,顯示全部數(shù)據(jù),在數(shù)據(jù)量較大時(shí),則只顯示數(shù)據(jù)摘要。

要去掉 min_rows 的設(shè)置,可以把該選項(xiàng)設(shè)置為 None

pd.options.display.min_rows = None

sales_date1 = pd.date_range( '20190101' , periods=1000, freq= 'D'
)
amount1 = np.arange(1000)
cols = [
'銷售金額' 
]
sales1 = pd.DataFrame(amount1,index=sales_date1,columns=cols)

min_rows

在 VSCode 里顯示正常,只顯示了前 5 行與后 5 行,但貌似 Jupyter Notebook 6.0 目前貌似還不支持這個(gè)設(shè)置,還是顯示前 30 行與后 30 行。圖片太長(zhǎng),這里就不截圖了。如果 Jupyter 可以的話,請(qǐng)告訴我。

5. json_normalize() 支持 max_level

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

from pandas.io.json import
json_normalize
data = [{
'CreatedBy' : { 'Name' : 'User001' },
'Lookup' : { 'TextField' : 'Some text' , 
'UserField' : { 'Id' : 'ID001' , 'Name' : 'Name001' }},
'Image' : { 'a' : 'b' 
}
}]

0.25 以前是這樣的,所有層級(jí)都讀取出來了:

json_normalize(data)

0.25 以后是這樣的,可以通過 max_level 參數(shù)控制讀取的 JSON 數(shù)據(jù)層級(jí):

json_normalize(data, max_level= 1 )

6. 增加 explode() 方法,把 list “炸 ” 成行

Series 與 DataFrame 增加了 explode() 方法,把 list 形式的值轉(zhuǎn)換為單獨(dú)的行。

df = pd.DataFrame([{ '變量1' : 'a,b,c' , '變量2' : 1 
},
{
'變量1' : 'd,e,f' , '變量2' : 2 
}])

df

df.assign(變量 1 =df.變量 1. str.split( ',' )).explode( '變量1' )

以后再拆分這樣的數(shù)據(jù)就簡(jiǎn)單多了。具體官方文檔說明詳見 section on Exploding list-like column 。

7. SparseDataFrame 被廢棄了

0.25 以前專門有 SparseDataFrame() ,生成稀疏矩陣,0.25 以后,這個(gè)函數(shù)被廢棄了,改成 pd.DataFrame 里的 pd.SparseArray() 了,函數(shù)統(tǒng)一了,但是要多敲幾下鍵盤了。

0.25 以前是這樣的:

pd.SparseDataFrame({ "A" : [0, 1]})

0.25 以后是這樣的:

pd.DataFrame({ "A" : pd.SparseArray([0, 1])})

輸出的結(jié)果都是一樣的:

8. 對(duì) DataFrame Groupby 后,Groupby.apply 對(duì)每組只處理一次

df = pd.DataFrame({ "a" : [ "x" , "y" ], "b" : [ 1 , 2
]})
df
def func (group) : print(group.name) return 
group
df.groupby(
'a' ).apply(func) 

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

0.25以前

0.25以后

這樣才正常嘛~~!

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

data = [
{
'姓 名' : '張三' , '城 市' : '北京' , '年 齡' : 18 
},
{
'姓 名' : '李四' , '城 市' : '上海' , '年 齡' : 19 , '愛 好' : '打游戲' 
},
{
'姓 名' : '王五' , '城 市' : '廣州' , '年 齡' : 20 , '財(cái)務(wù)狀況' : '優(yōu)' 
}
]
pd.DataFrame(data)

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

現(xiàn)在,我的字典終于我做主了!

10. Query() 支持列名空格了

用上面的 data 生成一個(gè)示例 DataFrame,注意列名是有空格的。

df = pd.DataFrame(data)

現(xiàn)在用反引號(hào)(`)括住列名,就可以直接查詢了:

df.query( '`年 齡` <19' )

好了,本文就先介紹 pandas 0.25 的這些改變,其實(shí),0.25 還包括了很多優(yōu)化,比如,對(duì) DataFrame GroupBy 后 ffill , bfill 方法的調(diào)整,對(duì)類別型數(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來了千萬別錯(cuò)過這10大好用的新功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • selenium+opencv實(shí)現(xiàn)滑塊驗(yàn)證碼的登陸

    selenium+opencv實(shí)現(xiàn)滑塊驗(yàn)證碼的登陸

    很多網(wǎng)站登錄登陸時(shí)都要用到滑塊驗(yàn)證碼,本文主要介紹了selenium+opencv實(shí)現(xiàn)滑塊驗(yàn)證碼的登陸,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 利用Python如何實(shí)現(xiàn)K-means聚類算法

    利用Python如何實(shí)現(xiàn)K-means聚類算法

    聚類算法有很多種(幾十種),K-Means是聚類算法中的最常用的一種,算法最大的特點(diǎn)是簡(jiǎn)單,好理解,運(yùn)算速度快,下面這篇文章主要給大家介紹了關(guān)于利用Python如何實(shí)現(xiàn)K-means聚類算法的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 教你如何使用Python快速爬取需要的數(shù)據(jù)

    教你如何使用Python快速爬取需要的數(shù)據(jù)

    學(xué)點(diǎn)數(shù)據(jù)爬蟲基礎(chǔ)能讓繁瑣的數(shù)據(jù)CV工作(Ctrl+C,Ctrl+V)成為自動(dòng)化就足夠了.作為一名數(shù)據(jù)分析師而并非開發(fā)工程師,需要掌握的爬蟲必備的知識(shí)內(nèi)容,能獲取需要的數(shù)據(jù)即可 ,需要的朋友可以參考下
    2021-06-06
  • python做量化投資系列之比特幣初始配置

    python做量化投資系列之比特幣初始配置

    這篇文章主要為大家詳細(xì)介紹了python做量化投資系列之比特幣初始配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python使用pgzero進(jìn)行游戲開發(fā)

    python使用pgzero進(jìn)行游戲開發(fā)

    今天要和大家分享的pgzero(pygame zero)是在pygame基礎(chǔ)上做了進(jìn)一步的封裝,使得設(shè)計(jì)一款游戲十分的方便,特別適合少兒編程領(lǐng)域的教學(xué), 與scratch相得益彰。
    2021-06-06
  • python not關(guān)鍵字實(shí)例用法

    python not關(guān)鍵字實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python not關(guān)鍵字實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)

    python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)

    這篇文章主要介紹了python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用Flask創(chuàng)建簡(jiǎn)單的圖片上傳站點(diǎn)的流程步驟

    使用Flask創(chuàng)建簡(jiǎn)單的圖片上傳站點(diǎn)的流程步驟

    在網(wǎng)絡(luò)應(yīng)用程序中,實(shí)現(xiàn)圖片上傳功能是一項(xiàng)常見的需求,Flask框架提供了簡(jiǎn)單而靈活的工具,使得構(gòu)建這樣的功能變得相對(duì)簡(jiǎn)單,本文將介紹如何使用Flask框架創(chuàng)建一個(gè)簡(jiǎn)單的圖片上傳站點(diǎn),以及其中涉及的關(guān)鍵技術(shù)和步驟,需要的朋友可以參考下
    2024-05-05
  • Python利用matplotlib生成圖片背景及圖例透明的效果

    Python利用matplotlib生成圖片背景及圖例透明的效果

    這篇文章主要給大家介紹了Python利用matplotlib生成圖片背景及圖例透明效果的相關(guān)資料,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考家價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-04-04
  • Python調(diào)用SQLPlus來操作和解析Oracle數(shù)據(jù)庫的方法

    Python調(diào)用SQLPlus來操作和解析Oracle數(shù)據(jù)庫的方法

    這篇文章主要介紹了Python調(diào)用SQLPlus來操作和解析Oracle數(shù)據(jù)庫的方法,這樣用SQL*Plus方式來分析Oracle中的數(shù)據(jù)就變得十分方便,需要的朋友可以參考下
    2016-04-04

最新評(píng)論