在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

groupby功能的大多數(shù)用例

數(shù)據(jù)分析與開發(fā) ? 來源:DeepHub IMBA ? 作者:DeepHub IMBA ? 2022-10-20 14:22 ? 次閱讀

groupby是Pandas在數(shù)據(jù)分析中最常用的函數(shù)之一。它用于根據(jù)給定列中的不同值對(duì)數(shù)據(jù)點(diǎn)(即行)進(jìn)行分組,分組后的數(shù)據(jù)可以計(jì)算生成組的聚合值。 如果我們有一個(gè)包含汽車品牌和價(jià)格信息的數(shù)據(jù)集,那么可以使用groupby功能來計(jì)算每個(gè)品牌的平均價(jià)格。 fe865cfc-5032-11ed-a3b6-dac502259ad0.png 在本文中,我們將使用25個(gè)示例來詳細(xì)介紹groupby函數(shù)的用法。這25個(gè)示例中還包含了一些不太常用但在各種任務(wù)中都能派上用場(chǎng)的操作。 這里使用的數(shù)據(jù)集是隨機(jī)生成的,我們把它當(dāng)作一個(gè)銷售的數(shù)據(jù)集。

importpandasaspd
sales=pd.read_csv("sales_data.csv")
sales.head()

 feb2260c-5032-11ed-a3b6-dac502259ad0.png1、單列聚合 我們可以計(jì)算出每個(gè)店鋪的平均庫存數(shù)量如下:
sales.groupby("store")["stock_qty"].mean()

#輸出
store
Daisy1811.861702
Rose1677.680000
Violet14622.406061
Name:stock_qty,dtype:float64

2、多列聚合

在一個(gè)操作中進(jìn)行多個(gè)聚合。以下是我們?nèi)绾斡?jì)算每個(gè)商店的平均庫存數(shù)量和價(jià)格。

sales.groupby("store")[["stock_qty","price"]].mean()sales.groupby("store")[["stock_qty","price"]].mean()
fecf769e-5032-11ed-a3b6-dac502259ad0.png3、多列多個(gè)聚合 我們還可以使用agg函數(shù)來計(jì)算多個(gè)聚合值。
sales.groupby("store")["stock_qty"].agg(["mean","max"])
feea618e-5032-11ed-a3b6-dac502259ad0.png4、對(duì)聚合結(jié)果進(jìn)行命名 在前面的兩個(gè)示例中,聚合列表示什么還不清楚。例如,“mean”并沒有告訴我們它是什么的均值。在這種情況下,我們可以對(duì)聚合的結(jié)果進(jìn)行命名。
sales.groupby("store").agg(
avg_stock_qty=("stock_qty","mean"),
max_stock_qty=("stock_qty","max")
)
ff8cb8bc-5032-11ed-a3b6-dac502259ad0.png 要聚合的列和函數(shù)名需要寫在元組中。 5、多個(gè)聚合和多個(gè)函數(shù)
sales.groupby("store")[["stock_qty","price"]].agg(["mean","max"])

ff990018-5032-11ed-a3b6-dac502259ad0.png

6、對(duì)不同列的聚合進(jìn)行命名

sales.groupby("store").agg(
avg_stock_qty=("stock_qty","mean"),
avg_price=("price","mean")
)
ffb730ba-5032-11ed-a3b6-dac502259ad0.png7、as_index參數(shù) 如果groupby操作的輸出是DataFrame,可以使用as_index參數(shù)使它們成為DataFrame中的一列。
sales.groupby("store",as_index=False).agg(

avg_stock_qty=("stock_qty","mean"),
avg_price=("price","mean")
)
ffdbaeae-5032-11ed-a3b6-dac502259ad0.png8、用于分組的多列 就像我們可以聚合多個(gè)列一樣,我們也可以使用多個(gè)列進(jìn)行分組。
sales.groupby(["store","product_group"],as_index=False).agg(

avg_sales=("last_week_sales","mean")

).head()
fff29006-5032-11ed-a3b6-dac502259ad0.png 每個(gè)商店和產(chǎn)品的組合都會(huì)生成一個(gè)組。 9、排序輸出 可以使用sort_values函數(shù)根據(jù)聚合列對(duì)輸出進(jìn)行排序。
sales.groupby(["store","product_group"],as_index=False).agg(avg_sales=("last_week_sales","mean")

).sort_values(by="avg_sales",ascending=False).head()
0026e748-5033-11ed-a3b6-dac502259ad0.png 這些行根據(jù)平均銷售值按降序排序。 10、最大的Top N max函數(shù)返回每個(gè)組的最大值。如果我們需要n個(gè)最大的值,可以用下面的方法:
sales.groupby("store")["last_week_sales"].nlargest(2)

store
Daisy4131883
231947
Rose948883
263623
Violet9913222
3392690
Name:last_week_sales,dtype:int64

11、最小的Top N

與最大值相似,也可以求最小值

sales.groupby("store")["last_week_sales"].nsmallest(2)

12、第n個(gè)值

除上面2個(gè)以外,還可以找到一組中的第n個(gè)值。

sales_sorted=sales.sort_values(by=["store","last_month_sales"],ascending=False,ignore_index=True)

找到每個(gè)店鋪上個(gè)月銷售排名第五的產(chǎn)品如下:

sales_sorted.groupby("store").nth(4)
003eab76-5033-11ed-a3b6-dac502259ad0.png 輸出包含每個(gè)組的第5行。由于行是根據(jù)上個(gè)月的銷售值排序的,所以我們將獲得上個(gè)月銷售額排名第五的行。 13、第n個(gè)值,倒排序 也可以用負(fù)的第n項(xiàng)。例如," nth(-2) "返回從末尾開始的第二行。
sales_sorted.groupby("store").nth(-2)
0055b956-5033-11ed-a3b6-dac502259ad0.png14、唯一值 unique函數(shù)可用于查找每組中唯一的值。例如,可以找到每個(gè)組中唯一的產(chǎn)品代碼如下:
sales.groupby("store",as_index=False).agg(
unique_values=("product_code","unique")
)
007b6002-5033-11ed-a3b6-dac502259ad0.png15、唯一值的數(shù)量 還可以使用nunique函數(shù)找到每組中唯一值的數(shù)量。
sales.groupby("store",as_index=False).agg(
number_of_unique_values=("product_code","nunique")
)
0095f980-5033-11ed-a3b6-dac502259ad0.png16、Lambda表達(dá)式 可以在agg函數(shù)中使用lambda表達(dá)式作為自定義聚合操作。
sales.groupby("store").agg(
total_sales_in_thousands=(
"last_month_sales",
lambdax:round(x.sum()/1000,1)
)
)
00af3eb8-5033-11ed-a3b6-dac502259ad0.png17、apply函數(shù) 使用apply函數(shù)將Lambda表達(dá)式應(yīng)用到每個(gè)組。例如,我們可以計(jì)算每家店上周銷售額與上個(gè)月四分之一銷售額的差值的平均值,如下:
sales.groupby("store").apply(
lambdax:(x.last_week_sales-x.last_month_sales/4).mean()
)

store
Daisy5.094149
Rose5.326250
Violet8.965152
dtype:float64

18、dropna

缺省情況下,groupby函數(shù)忽略缺失值。如果用于分組的列中缺少一個(gè)值,那么它將不包含在任何組中,也不會(huì)單獨(dú)顯示。所以可以使用dropna參數(shù)來改變這個(gè)行為。 讓我們首先添加一個(gè)缺少存儲(chǔ)值的新行。

sales.loc[1000]=[None,"PG2",10000,120,64,96,15,53]

 然后計(jì)算帶有dropna參數(shù)和不帶有dropna參數(shù)的每個(gè)商店的平均價(jià)格,以查看差異。
sales.groupby("store")["price"].mean()

store
Daisy69.327426
Rose60.513700
Violet67.808727
Name:price,dtype:float64
看看設(shè)置了缺失值參數(shù)的結(jié)果:
sales.groupby("store",dropna=False)["price"].mean()

store
Daisy69.327426
Rose60.513700
Violet67.808727
NaN96.000000
Name:price,dtype:float64
groupby函數(shù)的dropna參數(shù),使用pandas版本1.1.0或更高版本。 19、求組的個(gè)數(shù) 有時(shí)需要知道生成了多少組,這可以使用ngroups。
sales.groupby(["store","product_group"]).ngroups

18
在商店和產(chǎn)品組列中有18種不同值的不同組合。 20、獲得一個(gè)特定分組 get_group函數(shù)可獲取特定組并且返回DataFrame。 例如,我們可以獲得屬于存儲(chǔ)“Daisy”和產(chǎn)品組“PG1”的行如下:
aisy_pg1=sales.groupby(
["store","product_group"]).get_group(("Daisy","PG1")
)
daisy_pg1.head()
00bc5cc4-5033-11ed-a3b6-dac502259ad0.png21、rank函數(shù) rank函數(shù)用于根據(jù)給定列中的值為行分配秩。我們可以使用rank和groupby函數(shù)分別對(duì)每個(gè)組中的行進(jìn)行排序。
sales["rank"]=sales.groupby("store"["price"].rank(
ascending=False,method="dense"
)

sales.head()
01132df6-5033-11ed-a3b6-dac502259ad0.png22、累計(jì)操作 們可以計(jì)算出每組的累計(jì)總和。
importnumpyasnpdf=pd.DataFrame(
{
"date":pd.date_range(start="2022-08-01",periods=8,freq="D"),
"category":list("AAAABBBB"),
"value":np.random.randint(10,30,size=8)
}
)
014b3282-5033-11ed-a3b6-dac502259ad0.png 我們可以單獨(dú)創(chuàng)建一個(gè)列,包含值列的累計(jì)總和,如下所示:
df["cum_sum"]=df.groupby("category")["value"].cumsum()

 016a7a5c-5033-11ed-a3b6-dac502259ad0.png23、expanding函數(shù) expanding函數(shù)提供展開轉(zhuǎn)換。但是對(duì)于展開以后的操作還是需要一個(gè)累計(jì)函數(shù)來堆區(qū)操作。例如它與cumsum 函數(shù)一起使用,結(jié)果將與與sum函數(shù)相同。
df["cum_sum_2"]=df.groupby(
"category"
)["value"].expanding().sum().values
01740086-5033-11ed-a3b6-dac502259ad0.png24、累積平均 利用展開函數(shù)和均值函數(shù)計(jì)算累積平均。
df["cum_mean"]=df.groupby(
"category"
)["value"].expanding().mean().values
0187744a-5033-11ed-a3b6-dac502259ad0.png25、展開后的最大值 可以使用expand和max函數(shù)記錄組當(dāng)前最大值。
df["current_highest"]=df.groupby(
"category"
)["value"].expanding().max().values
01f61b70-5033-11ed-a3b6-dac502259ad0.png 在Pandas中g(shù)roupby函數(shù)與aggregate函數(shù)共同構(gòu)成了高效的數(shù)據(jù)分析工具。在本文中所做的示例涵蓋了groupby功能的大多數(shù)用例,希望對(duì)你有所幫助。
審核編輯:彭靜

                                        
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4332

    瀏覽量

    62677
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1451

    瀏覽量

    34066
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24716

原文標(biāo)題:25 個(gè)例子學(xué)會(huì) Pandas Groupby 操作!

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么圖騰柱電路大多數(shù)三極管來實(shí)現(xiàn)的呢

    本帖最后由 夢(mèng)想號(hào) 于 2014-7-18 22:13 編輯 怎么我見到很多的圖騰柱電路大多數(shù)都是npn+pnp來實(shí)現(xiàn)的。三極管不是有比較大的壓降的嗎,還有三極管的速度不怎么快,輸出電流不夠
    發(fā)表于 07-18 22:08

    為什么現(xiàn)在大多數(shù)四軸飛行器都采用的是X型布局

    `四軸飛行器不單單只有X型,還有十型和H型。為什么現(xiàn)在大多數(shù)四軸飛行器都采用的是X型布局呢?據(jù)我了解,十字型布局更加簡(jiǎn)單,更容易上手?`
    發(fā)表于 05-06 16:49

    斯蒂芬斯蒂芬斯蒂芬斯蒂芬水電費(fèi)是大多數(shù)

    斯蒂芬斯蒂芬斯蒂芬斯蒂芬水電費(fèi)是大多數(shù)
    發(fā)表于 03-24 13:59

    技術(shù)支持工程師面試試題大多數(shù)是什么

    技術(shù)支持工程師面試試題大多數(shù)是什么技術(shù)支持工程師面試試題大多數(shù)是什么
    發(fā)表于 12-04 21:53

    請(qǐng)問為什么大多數(shù)MCU單片機(jī)工作電壓都是5V?

    為何大多數(shù)MCU單片機(jī)工作電壓為5V?
    發(fā)表于 12-22 07:35

    如何解決大多數(shù)電源完整性問題

    。有時(shí)候,只需要用四層電路板上的一個(gè)電源層和一個(gè)地層,就可以解決大多數(shù)電源完整性問題。除了電源層以外,還可以為每只IC去耦,以解決設(shè)計(jì)中繁瑣的電源問題。不過,現(xiàn)在的PCB空間(還有成本與你的日程)都很緊...
    發(fā)表于 12-28 08:08

    大多數(shù)為單指令周期

    大多數(shù)為單指令周期 ATtiny10/11/12特點(diǎn)1. AVR RISC 結(jié)構(gòu)2. AVR 高性能低功耗RISC 結(jié)構(gòu)90 條指令大多數(shù)為單指令周期32 個(gè)8 位通用工作寄存器工作在 8MHz
    發(fā)表于 03-26 16:51 ?23次下載

    大多數(shù)用戶并不習(xí)慣在智能音箱上收聽新聞

    聽音樂、播報(bào)新聞、查詢天氣等被視為智能音箱最常用的功能,但實(shí)際上功能調(diào)取的頻率與用戶的感受并不一定高度相關(guān)。近日,外媒公布的最新報(bào)告顯示,大多數(shù)用戶實(shí)際上并不習(xí)慣在智能音箱上收聽新聞。
    發(fā)表于 11-20 14:31 ?1617次閱讀

    為什么大多數(shù)加密貨幣沒有存在的必要

    大多數(shù)人窮盡一生都在尋找自我存在的理由。這是個(gè)非常有趣的論點(diǎn),但本文的重點(diǎn)是尋找加密貨幣(大多數(shù),不是所有)存在的理由。我將首先解釋競(jìng)爭(zhēng)幣存在的主要原因,然后再介紹比特幣及其目前和未來的發(fā)展,最后會(huì)說明為什么大多數(shù)競(jìng)爭(zhēng)幣可能沒有
    發(fā)表于 07-04 10:34 ?802次閱讀
    為什么<b class='flag-5'>大多數(shù)</b>加密貨幣沒有存在的必要

    大多數(shù)加密數(shù)字貨幣都存在什么問題

    據(jù)加密數(shù)字貨幣分析師Willy Woo在推特上發(fā)布的最新數(shù)據(jù)顯示,大多數(shù)加密數(shù)字貨幣項(xiàng)目都嚴(yán)重缺乏市場(chǎng)流動(dòng)性,這使許多嚴(yán)肅的投資者望而卻步。
    發(fā)表于 11-28 10:07 ?1738次閱讀

    大多數(shù)企業(yè)擔(dān)憂5G技術(shù)帶來的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)

    據(jù)外媒報(bào)道,德勤(Deloitte)的一項(xiàng)調(diào)查顯示,大多數(shù)專業(yè)人士表示,他們所在的企業(yè)擔(dān)心采用5G技術(shù)帶來的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)。
    的頭像 發(fā)表于 12-09 15:55 ?2159次閱讀

    ADISUSB驅(qū)動(dòng)程序文件(大多數(shù)情況下不需要)

    ADISUSB驅(qū)動(dòng)程序文件(大多數(shù)情況下不需要)
    發(fā)表于 06-07 20:27 ?5次下載
    ADISUSB驅(qū)動(dòng)程序文件(<b class='flag-5'>大多數(shù)</b>情況下不需要)

    滿足大多數(shù)倒計(jì)時(shí)控件的視圖教程

    CountDownView是一個(gè)具有倒計(jì)時(shí)功能的View,滿足大多數(shù)倒計(jì)時(shí)控件需求。 集成 方式一: 通過library生成har包,添加har包到libs文件夾內(nèi) 在entry的gradle內(nèi)添加
    發(fā)表于 04-01 11:03 ?1次下載

    為何大多數(shù)PLC采用ARM架構(gòu)CPU

    因?yàn)?b class='flag-5'>大多數(shù)PLC使用ARM架構(gòu)的芯片就夠用了啊!不僅如此,如果你拆開PLC的外殼查看設(shè)備的PCB會(huì)發(fā)現(xiàn),不僅其架構(gòu)是ARM的,而且還是很多年前版本的,這是為什么呢?簡(jiǎn)單來聊聊。
    的頭像 發(fā)表于 09-08 14:21 ?3247次閱讀

    大多數(shù)人5G隨身WiFi用戶被商家引導(dǎo),如何避免“劣質(zhì)”隨身WiFi?

    大多數(shù)5G隨身WiFi商家,所吹捧的宣傳點(diǎn),基本和網(wǎng)速快慢及穩(wěn)定性完全不相關(guān)。我們以電商平臺(tái)上,隨機(jī)4款5G隨身WiFi產(chǎn)品詳情為
    的頭像 發(fā)表于 07-19 15:29 ?1059次閱讀
    <b class='flag-5'>大多數(shù)</b>人5G隨身WiFi用戶被商家引導(dǎo),如何避免“劣質(zhì)”隨身WiFi?
    主站蜘蛛池模板: av网址在线看| 性做久久久久久久免费观看| 神马午夜51| 欧美黑人换爱交换乱理伦片| 全午夜免费一级毛片| 韩彩英三级无删版甜性涩爱| 国产午夜小视频| a4yy私人毛片在线| 黄色在线播放网站| 亚洲狠狠狠一区二区三区| 女人aaaaa片一级一毛片| 国产69久久精品成人看| 亚洲色啦啦狠狠网站| 天堂电影在线| 日本三级香港三级人妇99视| 六月天丁香婷婷| 国产高清毛片| jlzzjlzz亚洲日本| 黄色网在线| 国产精品久久久久国产精品三级| 亚洲国产综合人成综合网站00| 色费女人18女人毛片免费视频| 免费看 s色| bt天堂电影| 就操| 69日本人xxxxxxxx色| 爱爱帝国亚洲一区二区三区 | 永久免费看片| 欧美夜夜| 在线精品国产成人综合第一页| 中文字幕欧美日韩| 人人狠狠综合88综合久久| 国产日本在线播放| 桃花色综合影院| 中文4480yy私人免费影院| 视频一区二区不卡| 天天色天天碰| 黄色视屏免费看| 免费国产不卡午夜福在线| free欧美| 高清影院在线欧美人色|