首先先建立乙個**:
import pandas as pd
df = pd.dataframe(
)df
現在先簡單使用**中的特徵』key1』對資料進行劃分:
grouped=df.groupby(
['key1'])
for name ,group in grouped:
print
(name)
print
(group)
得到的劃分結果如下所示:
通過上面這個圖可以發現grouped=df.groupby([『key1』])的作用是根據「key1」的不同值將**df分為兩個部分,第乙個部分是「key1=a」,第二個部分是「key1=b」。用其它特徵進行劃分原理一樣。
現在我們不僅是用「key1」對**進行劃分,同時還要對劃分之後的**求其中特徵的均值,例如用以下**求劃分後的特徵的均值:
grouped = df.groupby(
['key1'])
.mean(
)grouped
其輸出結果如下:
通過上圖可以發現,通過「key1」對**df劃分為兩部分之後,再對兩部分中的「data1」和「data2」進行求平均值操作。這裡不對「key2」進行求平均值操作,因為特徵「key2」是文字類資訊,沒有平均值,所以不進行求平均值操作。
上面討論了使用乙個特徵對**df進行分組,現在使用多個特徵對**df進行劃分,簡單地分析,使用特徵「key1」和「key2」對**進行劃分,那會輸出什麼呢?輸入以下**:
for name, group in df.groupby(
['key1'
,'key2'])
:print
("劃分的特徵值:"
,name)
print
(group,
'\n'
)
得到的輸出結果如下:
通過上面這個圖可以發現,因為現在要使用兩個特徵對**進行劃分,特徵「key1」和特徵「key2」同樣有兩個類別,因此組合得到的劃分情況有四種,根據不同的劃分組合得到符合要求的劃分**,這樣就得到了上圖中的情況。當使用三個或者四個特徵對**進行劃分的時候,組合的個數更多,同時會劃分得更加細緻。具體原理是一樣的。
在上面介紹多特徵對**進行劃分的時候,我們是基於整個**進行劃分的,如果我們只想針對其中的部分特徵進行劃分,具體又該怎麼操作呢?我們現有有下面這個**,如果我們只想對其中的「data1」和「data2」基於「key1」進行劃分,該怎麼操作呢?
輸入以下**:
for name, group in df[
['data1'
,'data2'
,'key1']]
.groupby(
['key1'])
:print
("劃分的特徵值:"
,name)
print
(group,
'\n'
)
得到的輸出結果如下圖所示:
其實這個和最開始介紹的對整個**進行劃分的原理是一樣的,但是需要注意的是,**不能寫成下面的形式:
for name, group in df[
['data1'
,'data2']]
.groupby(
['key1'])
:print
("劃分的特徵值:"
,name)
print
(group,
'\n'
)
這樣的**是錯誤的,這段**和前一段**的差別主要在於df[[『data1』,『data2』]]中沒有了』key1』,這樣是不行的,因為這樣的意思是我們選取了**中的』data1』列和』data2』列,但是沒有選取』key1』列,這樣資料中沒有』key1』,是沒有辦法進行劃分的。
上面說了很多對於groupby的功能介紹,但是這個東西究竟能用在什麼地方呢?這裡簡單舉乙個例子。
現在有乙個場景,有兩家商店1和2,每家商店有a,b,c三種商品,每家商店的每種商品都有各自的日銷售額,現在要快速得到每家商店每種商品的月銷售額,那麼我們就可以使用groupby來進行操作。
具體的資料如下:
import pandas as pd
df = pd.dataframe(
)df
我們得到的**具體如下所示:
現在我們需要計算每家商店每種商品的月銷售額,使用groupby進行操作,具體**如下:
grouped = df.groupby(
['shop_id'
,'item_id'])
.sum()
.reset_index(
)grouped.rename(columns=
)
**中的第一步是使用「shop_id」和「item_id」對**進行分類,這樣因為商店有兩種,商品有三種,對於每一家商店都有三種情況,劃分後記進行求和操作就可以得到每家商店的月銷售額,**中的resent_index()的作用是保留作為劃分的「shop_id」和「item_id」,如果去掉則輸出的是另一種**形式。第二段**是對其中的「item_daysale」特徵進行改名。
這樣得到的最後的輸出如下如所示:
這樣便完成了對銷售額的月總和計算。
如果我們**中沒有輸入resent_index(),則輸出如下所示:
這並不是我們想要的輸出,我們希望輸出的列項有「shop_id」,「item_id」和「item_monthsale」。所以得根據具體需要什麼來寫**實現。
Python中的分組函式groupby及其壓縮應用
我們先來看乙個題目 給定一組字元,使其壓縮,壓縮後的長度必須始終小於或等於原陣列長度。示例 1 輸入 a a b b c c c 輸出 a 2 b 2 c 3 說明 aa 被 a2 替代。bb 被 b2 替代。ccc 被 c3 替代。或者輸出乙個描述元組 輸入 a a b b c c c 輸出 a ...
linq to xml中group by的應用
xml文件內容如下 003小張 female 30南大 13328981152 004徐越 female 22乙個大學 13328981152 005小櫻 female 22南大 13328981152 006小趙 female 22南郵 13328981152 007小虎 female 22東南 ...
JS中的groupBy方法
最近工作中需要寫一些運營資料包表的頁面,後端返回的資料都是未處理過的json,所以,大量的運算任務交給了前端來做,這其中有乙個功能就是對資料進行分組,一開始我自己也嘗試寫了一些,但 量比較大,顯得很繁瑣,直到後來在stackoverflow上看到了某位大牛寫的方法,非常簡潔優雅,如下 functio...