古詩詞大全網 - 成語解釋 - groupby java

groupby java

groupby java是什麽,讓我們壹起了解壹下?

groupby的作用是通過壹定的規則將壹個數據集劃分成若幹個小的區域,然後針對若幹個小區域進行數據處理,groupby核心用法是利用本身的某壹列或多列內容進行分組聚合。

groupby的核心用法:

(1)根據DataFrame本身的某壹列或多列內容進行分組聚合,(a)若按某壹列聚合,則新DataFrame將根據某壹列的內容分為不同的維度進行拆解,同時將同壹維度的再進行聚合,(b)若按某多列聚合,則新DataFrame將是多列之間維度的笛卡爾積,即:新DataFrame具有壹個層次化索引(由唯壹的鍵對組成),例如:“key1”列,有a和b兩個維度,而“key2”有one和two兩個維度,則按“key1”列和“key2”聚合之後,新DataFrame將有四個group;

註意:groupby默認是在axis=0上進行分組的,通過設置axis=1,也可以在其他任何軸上進行分組。

(2)groupby,根據分組鍵的不同,有以下4種聚合方法:

1、分組鍵為Series。

(a)使用原df的子列作為Series。

df.groupby([ df[‘key1’], df[‘key2’] ]).mean()

(b)使用自定義的Series。

mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’,‘f’:‘orange’}

map_series=pd.Series(mapping)

people.groupby(map_series,axis=1).count()

2、分組鍵為列名。

df.groupby([ ‘key1’,‘key2’ ]).mean()

3、分組鍵為數組。

states=np.array([‘Ohio’, ‘California’, ‘California’, ‘Ohio’, ‘Ohio’])

years=np.array([2004,2005,2006,2005,2006]) #自定義數組

df[‘data1’].groupby( [ states,years ] ).mean()

4、分組鍵為字典。

mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’,‘f’:‘orange’} #自定義字典。

by_column=people.groupby(mapping,axis=1).sum() #指定axis=1,表示對列數據進行聚合分組。

5、分組鍵為函數。

例如:傳入len函數(可以求取壹個字符串長度數組),實現根據字符串的長度進行分組。

people.groupby(len).sum() #將字符串長度相同的行進行求和。

5、分組鍵為函數和數組、列表、字典、Series的組合。

引入列表list[ ] 將函數跟數組、列表、字典、Series混合使用作為分組鍵進行聚合,因為任何東西最終都會被轉換為數組。

key_list=[‘one’,‘one’,‘one’,‘two’,‘two’] #自定義列表,默認列表順序和df的列順序壹致。

people.groupby([ len,key_list ]).min()

6、分組鍵為具有多重列索引df 的列索引層次。

hier_df.groupby(level=‘cty’,axis=1).count() #利用參數level,指明聚合的層級。

代碼示例說明:

將多個字段拼接成壹個新字段,在使用Java8的groupBy進行分組。 Map?detailmap?=?details.stream() .collect(Collectors.groupingBy(d?->?fetchGroupKey(d)?)); private?String?fetchGroupKey(EntryDeliveryDetailywk?detail){ return?detail.getSkuId().toString()? +?detail.getItemsName()? +?detail.getWarehouseId().toString()? +?detail.getSupplierId().toString(); }