這部分同pandas的gorupby函數(shù)基本相同,實(shí)現(xiàn)對(duì)數(shù)據(jù)的分組歸類等等。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到金水網(wǎng)站設(shè)計(jì)與金水網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋金水地區(qū)。
split·將數(shù)據(jù)分為多個(gè)獨(dú)立的組。
apply·對(duì)各個(gè)組進(jìn)行操作。
combine·將各個(gè)組合并為一個(gè)數(shù)據(jù)對(duì)象。
創(chuàng)建一個(gè)dataset
我對(duì)官網(wǎng)的例子加以修改以便更好的理解。
解釋下數(shù)據(jù)結(jié)構(gòu),創(chuàng)建了一個(gè)二維數(shù)據(jù)u(lat, lon),坐標(biāo)數(shù)據(jù)為latitude 和country ,強(qiáng)調(diào)一下這里創(chuàng)建的是dataset,而不是dataArray,分不清的可以再看看本系列的第一篇文章。坐標(biāo)數(shù)據(jù)不等于u的坐標(biāo)。創(chuàng)建coords部分都指明了latitude 和 country 都是針對(duì)lat的擴(kuò)展。
我們可以這樣理解,對(duì)于緯度的分類,我們可以按緯度的大小分,也就是"latitude": [10, 20, 30, 40] ; 我們也可以對(duì)緯度所在的國(guó)家分,"country": ("x", list("abba") ,那比如我們想求某個(gè)國(guó)家的數(shù)據(jù)的平均時(shí)就十分方便。
下邊我們進(jìn)行分組:
說(shuō)明第0和第4個(gè)數(shù)是國(guó)家a的,第2和第3是國(guó)家b的。
.groups換成.mean() 則就是對(duì)分組求平均,以此類推。
必須添加一個(gè)list才可以將其分類結(jié)果打印出來(lái)。直接打印DatasetGroupBy object是不能輸出結(jié)果的。
那么針對(duì)經(jīng)緯度的坐標(biāo)的分組怎么實(shí)現(xiàn)呢,比如說(shuō)選出區(qū)間在多少到多少之間的?
.groupby_bins() 函數(shù)可以解決這一問(wèn)題。
還是這個(gè)數(shù)據(jù),"latitude": [10, 20, 30, 40]
那我們想以25為界,分為兩組,0-25,25-50
在進(jìn)行了分組后,要對(duì)各個(gè)分組進(jìn)行計(jì)算。
我們先從dataset 中取出 u 這個(gè)dataarray
比如是實(shí)現(xiàn)前邊提到的按國(guó)家進(jìn)行數(shù)據(jù)平均,或者標(biāo)準(zhǔn)化
也可以通過(guò)map()函數(shù)使用一些自定義的函數(shù),比如說(shuō)標(biāo)準(zhǔn)化,
這個(gè)用法是官方提供的,但是我的Xarray版本過(guò)低,還不支持這種用法(Xarray會(huì)定期更新,以至于可能我介紹過(guò)的一些方法有了更簡(jiǎn)便的操作,大家可以在評(píng)論區(qū)留言)。
強(qiáng)調(diào)一句,Xarray官方的更新是比較快的,很可能我寫在這里的函數(shù)官方又給出了更新的版本,但是我沒(méi)辦法做到時(shí)刻與官方最新同步,所以如果遇到問(wèn)題,最好的解決辦法還是去查閱官方文檔的對(duì)應(yīng)部分。
如果有對(duì)list里的元素按照某個(gè)字段進(jìn)行分組的需求的話,可以通過(guò)itertools模塊中的groupby實(shí)現(xiàn)。
舉例,list中包含3個(gè)元素,希望通過(guò)country字段進(jìn)行分組,再按組操作,通過(guò)itemgetter可以取dict中key。
效果:
也可以通過(guò)lambda取dict中的字段。
除此之外,還可以實(shí)現(xiàn)自定義分組
效果:
python中g(shù)roupby函數(shù)主要的作用是進(jìn)行數(shù)據(jù)的分組以及分組后地組內(nèi)運(yùn)算!
對(duì)于數(shù)據(jù)的分組和分組運(yùn)算主要是指groupby函數(shù)的應(yīng)用,具體函數(shù)的規(guī)則如下:
df[](指輸出數(shù)據(jù)的結(jié)果屬性名稱).groupby([df[屬性],df[屬性])(指分類的屬性,數(shù)據(jù)的限定語(yǔ),可以有多個(gè)).mean()(對(duì)于數(shù)據(jù)的計(jì)算方式——函數(shù)名稱)
另外,我們也可以過(guò)濾掉和忽略掉你不想要的組,而是返回一個(gè)類似索引對(duì)象。在這個(gè)對(duì)象中,我們分組時(shí)需要設(shè)置一個(gè)過(guò)濾條件,那么沒(méi)有通過(guò)的分組的元素被NaN 填充,這樣分組后被NaN 填充的數(shù)據(jù)就可以忽略了。
1、分組
grouped = df['需要計(jì)算的列名'].groupby(df['需要分組的列名']).sum() --求和或者其他函數(shù)
小tips:數(shù)值區(qū)間篩選查詢數(shù)量
小于10:
df[(df.列名10)].count()
大于等于10,小于20:
df[(df.列名=10)(df.列名20)].count() --重點(diǎn):中間連接用
2、排序
df.sort_values(by='要排序的列',axis=0,ascending=False)
axis=0 按照列排序, =1 按照行排序
ascending=False 降序 , =True 升序
groupby 方法是pandas中的分組方法,對(duì)數(shù)據(jù)框采用 groupby 方法后,返回的是 DataFrameGroupBy 對(duì)象,一般分組操作后會(huì)進(jìn)行聚合操作。
對(duì)數(shù)據(jù)框按 A 列進(jìn)行分組,產(chǎn)生分組數(shù)據(jù)框。分組數(shù)據(jù)框是可迭代對(duì)象,可以進(jìn)行循環(huán)遍歷,可以看出在循環(huán)中,每個(gè)元素的類型是元組,
元組的第一個(gè)元素是分組值,第二個(gè)元素是對(duì)應(yīng)的分組數(shù)據(jù)框。
可以對(duì)分組后的數(shù)據(jù)框直接使用聚合方法 agg ,對(duì)分組數(shù)據(jù)框的每一列計(jì)算統(tǒng)計(jì)函數(shù)值。
可以根據(jù)數(shù)據(jù)框外的序列數(shù)據(jù)對(duì)數(shù)據(jù)框進(jìn)行分組,需要注意 序列長(zhǎng)度需要與數(shù)據(jù)框行數(shù)相同 。
可以根據(jù)數(shù)據(jù)框的多列對(duì)數(shù)據(jù)框進(jìn)行分組。
根據(jù) A , B 列進(jìn)行分組,然后求和。
可以根據(jù)索引對(duì)數(shù)據(jù)框進(jìn)行分組,需要設(shè)置 level 參數(shù)。
數(shù)據(jù)框只有一層索引,設(shè)置參數(shù) level=0 。
當(dāng)數(shù)據(jù)框索引有多層時(shí),也可以根據(jù)需求設(shè)置 level 參數(shù),完成分組聚合。
設(shè)置 level 參數(shù),如需要根據(jù)第一層索引,即 id1 進(jìn)行分組,可以設(shè)置 level=0 或 level='id1' 完成分組聚合。
分組后一般會(huì)進(jìn)行聚合操作,用 agg 方法進(jìn)行聚合。
對(duì)分組后數(shù)據(jù)框使用單個(gè)函數(shù)進(jìn)行聚合,單個(gè)聚合函數(shù)會(huì)對(duì)每列進(jìn)行計(jì)算,然后合并返回。聚合函數(shù)以字符串的形式傳入。
可以對(duì)分組后的數(shù)據(jù)指定列進(jìn)行分組聚合。需要注意 子列需要用[]包裹 。
聚合函數(shù)也可以傳入自定義的匿名函數(shù)。
聚合函數(shù)可以是多個(gè)函數(shù)。聚合時(shí),多個(gè)聚合函數(shù)會(huì)對(duì)每列進(jìn)行計(jì)算,然后合并返回。聚合函數(shù)以列表的形式傳入。
聚合返回后的數(shù)據(jù)列名有兩層索引,第一層是聚合的列名,第二層是使用的聚合函數(shù)名。如果需要對(duì)返回的聚合函數(shù)名重命名,
需要在傳參時(shí),傳入元組,第一個(gè)元素為聚合函數(shù)名,第二個(gè)元素為聚合函數(shù)。
同樣,也可以傳入匿名函數(shù)。
如果需要對(duì)不同的列進(jìn)行不同的聚合計(jì)算,則需要傳入字典的形式。
可以重命名聚合后的列名,注意 只能對(duì)一列傳入一個(gè)聚合函數(shù)時(shí)有效 。
當(dāng)前標(biāo)題:python函數(shù)分組 python小組分工
文章路徑:http://chinadenli.net/article36/doopspg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、App開發(fā)、全網(wǎng)營(yíng)銷推廣、域名注冊(cè)、云服務(wù)器、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)