Python?groupby函數(shù)圖文詳解
一、分組原理
核心:
1、不論分組鍵是數(shù)組、列表、字典、Series、函數(shù),只要其與待分組變量的軸長度一致都可以傳入groupby進(jìn)行分組。
2、默認(rèn)axis=0按行分組,可指定axis=1對列分組。
groupby()語法格式
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, group_keys=True, squeeze=False, observed=False, **kwargs)
groupby原理
groupby就是按XX分組,比如將一個數(shù)據(jù)集按A進(jìn)行分組,效果如下
使用groupby實現(xiàn)功能
import numpy as np import pandas as pd data = pd.DataFrame({ 'name': ['Tom', 'Kaggle', 'Litter', 'Sam', 'Sam', 'Sam'], 'race': ['B', 'C', 'D', 'E', 'B', 'C'], 'age': [37.0, 61.0, 56.0, 87.0, 58.0, 34.0], 'signs_of_mental_illness': [True, True, False, False, False, False] }) data.groupby('race')
返回結(jié)果如上 得到一個叫DataFrameGroupBy的東西,pandas不能直接顯示出來 可以調(diào)用list顯示出來
groupby()的配合函數(shù) 函數(shù) 適用場景備注.mean()均值.count()計數(shù).min()最小值.mean().unstack()求均值,聚合表的層次索引不堆疊.size()計算分組大小GroupBy的size方法,將返回一個含有分組大小的Series.apply().agg()
這里演示.mean()和.count()
# mean() data.groupby('name')['age'].mean() # count() data.groupby('name')['age'].count() data.groupby('age').count()
也可以根據(jù)單鍵多列進(jìn)行聚合
# 單鍵多列聚合 data.groupby('name')[['race','age',]].count()
.agg操作 可以取多個函數(shù)進(jìn)行選擇 有時候我們既需要平均值,有需要計數(shù)(也可是取一個)
agg為列表
print(data.groupby('name')['age'].agg(['mean'])) print(data.groupby('name')['age'].agg(['mean','count']))
也可以傳入字典,對組內(nèi)不同列采取不同的操作
print(data.groupby('race').agg({'age': np.median, 'signs_of_mental_illness': np.mean}))
.apply()
可以使用我們自己所創(chuàng)建的函數(shù)
print('apply之前') grouped = data.groupby('name') for name, group in grouped: print(name) print(group) print('\n') print('apply之后') print(data.groupby('name').apply(lambda x: x.head(2)))
簡單操作基本介紹完成
有時候需要將聚合的另一列放到一起 并且取消鍵的重復(fù)值 這個時候可以這樣做
上面是構(gòu)建的數(shù)據(jù),需要對訂購時間進(jìn)行處理,這里我們是將月份+天數(shù)/30,然后對ID列進(jìn)行去重,并將后面Time列計算的結(jié)果放到一起
import numpy as np import pandas as pd data = pd.read_excel('訂購時間預(yù)測2.xlsx') def cut_m_d(x): return round(x.month + x.day / 30, 2) data['m_d'] = data['Time'].apply(cut_m_d) grouped = data.groupby('ID') # 這一步是去重(ID),不去重會出現(xiàn)錯誤 result = grouped['m_d'].unique() result2 = result.reset_index() print(result2)
總結(jié)
到此這篇關(guān)于Python groupby函數(shù)詳解的文章就介紹到這了,更多相關(guān)groupby函數(shù)詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python技巧分享之groupby基礎(chǔ)用法詳解
- python?groupby函數(shù)實現(xiàn)分組選取最大值與最小值
- python groupby函數(shù)實現(xiàn)分組后選取最值
- 詳解python中g(shù)roupby函數(shù)通俗易懂
- python groupby 函數(shù) as_index詳解
- Python DataFrame.groupby()聚合函數(shù),分組級運算
- Python中的groupby分組功能的實例代碼
- Python在groupby分組后提取指定位置記錄方法
- Python正則表達(dá)式中g(shù)roup與groups的用法詳解
相關(guān)文章
Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作,結(jié)合實例形式較為詳細(xì)的分析了flask框架使用DBUtils模塊連接數(shù)據(jù)庫的常見操作技巧與相關(guān)注意事項,需要的朋友可以參考下2018-07-07