df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“=================================================”)
df1 = df.groupby([‘class_1’, ‘class_2’]).sum() # 分組統(tǒng)計求和
print(df1)
1.3 對DataFrameGroupBy對象列名索引(對指定列統(tǒng)計計算)
其中,df.groupby(‘class_1’)得到一個DataFrameGroupBy對象,對該對象可以使用列名進行索引,以對指定的列進行統(tǒng)計。
如:df.groupby(‘class_1’)[‘num’].sum()
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109], [‘b’, ‘B’, ‘1等’, 112], [‘c’, ‘A’, ‘1等’, 125], [‘d’, ‘B’, ‘2等’, 120],
[‘e’, ‘B’, ‘1等’, 126], [‘f’, ‘B’, ‘2等’, 133], [‘g’, ‘A’, ‘2等’, 124], [‘h’, ‘B’, ‘1等’, 134],
[‘i’, ‘A’, ‘2等’, 117], [‘j’, ‘A’, ‘2等’, 128], [‘h’, ‘A’, ‘1等’, 130], [‘i’, ‘B’, ‘2等’, 122]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“=================================================”)
df1 = df.groupby(‘class_1’)[‘num’].sum()
print(df1)
代碼運行結果同上。
2. 對分組數據進行迭代
===================================================================================
2.1 對一級分類的DataFrameGroupBy對象進行遍歷
for name, group in DataFrameGroupBy_object
其中,name指分類的類名,group指該類的所有數據。
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109], [‘b’, ‘C’, ‘1等’, 112], [‘c’, ‘A’, ‘1等’, 125], [‘d’, ‘B’, ‘2等’, 120],
[‘e’, ‘B’, ‘1等’, 126], [‘f’, ‘B’, ‘2等’, 133], [‘g’, ‘C’, ‘2等’, 124], [‘h’, ‘A’, ‘1等’, 134],
[‘i’, ‘C’, ‘2等’, 117], [‘j’, ‘A’, ‘2等’, 128], [‘h’, ‘B’, ‘1等’, 130], [‘i’, ‘C’, ‘2等’, 122]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================”)
獲取目標數據。
df1 = df[[‘name’, ‘class_1’, ‘num’]]
for name, group in df1.groupby(‘class_1’):
print(name)
print(“=============================”)
print(group)
print(“==================================================”)
2.2 對二級分類的DataFrameGroupBy對象進行遍歷
對二級分類的DataFrameGroupBy對象進行遍歷,
以for (key1, key2), group in df.groupby([‘class_1’, ‘class_2’]) 為例
不同于一級分類的是, (key1, key2)是一個由多級類別組成的元組,而group表示該多級分類類別下的數據。
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109], [‘b’, ‘C’, ‘1等’, 112], [‘c’, ‘A’, ‘1等’, 125], [‘d’, ‘B’, ‘2等’, 120],
[‘e’, ‘B’, ‘1等’, 126], [‘f’, ‘B’, ‘2等’, 133], [‘g’, ‘C’, ‘2等’, 124], [‘h’, ‘A’, ‘1等’, 134],
[‘i’, ‘C’, ‘2等’, 117], [‘j’, ‘A’, ‘2等’, 128], [‘h’, ‘B’, ‘1等’, 130], [‘i’, ‘C’, ‘2等’, 122]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================”)
for (key1, key2), group in df.groupby([‘class_1’, ‘class_2’]):
print(key1, key2)
print(“=============================”)
print(group)
print(“==================================================”)
程序運行結果如下:
(部分)
3. agg()函數
=================================================================================
使用groupby()函數和agg()函數 實現 分組聚合操作運算。
3.1一般寫法_對目標數據使用同一聚合函數
以 分組求均值、求和 為例
給agg()傳入一個列表
df1.groupby([‘class_1’, ‘class_2’]).agg([‘mean’, ‘sum’])
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109, 144], [‘b’, ‘C’, ‘1等’, 112, 132], [‘c’, ‘A’, ‘1等’, 125, 137], [‘d’, ‘B’, ‘2等’, 120, 121],
[‘e’, ‘B’, ‘1等’, 126, 136], [‘f’, ‘B’, ‘2等’, 133, 127], [‘g’, ‘C’, ‘2等’, 124, 126], [‘h’, ‘A’, ‘1等’, 134, 125],
[‘i’, ‘C’, ‘2等’, 117, 125], [‘j’, ‘A’, ‘2等’, 128, 133], [‘h’, ‘B’, ‘1等’, 130, 122], [‘i’, ‘C’, ‘2等’, 122, 111]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num1’, ‘num2’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================”)
df1 = df[[‘class_1’, ‘class_2’, ‘num1’, ‘num2’]]
print(df1.groupby([‘class_1’, ‘class_2’]).agg([‘mean’, ‘sum’]))
3.2 對不同列使用不同聚合函數
給agg()方法傳入一個字典
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109, 144], [‘b’, ‘C’, ‘1等’, 112, 132], [‘c’, ‘A’, ‘1等’, 125, 137], [‘d’, ‘B’, ‘2等’, 120, 121],
[‘e’, ‘B’, ‘1等’, 126, 136], [‘f’, ‘B’, ‘2等’, 133, 127], [‘g’, ‘C’, ‘2等’, 124, 126], [‘h’, ‘A’, ‘1等’, 134, 125],
[‘i’, ‘C’, ‘2等’, 117, 125], [‘j’, ‘A’, ‘2等’, 128, 133], [‘h’, ‘B’, ‘1等’, 130, 122], [‘i’, ‘C’, ‘2等’, 122, 111]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num1’, ‘num2’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================”)
df1 = df[[‘class_1’, ‘num1’, ‘num2’]]
print(df1.groupby(‘class_1’).agg({‘num1’: [‘mean’, ‘sum’], ‘num2’: [‘sum’]}))
3.3 自定義函數寫法
也可以自定義一個函數(以名為max1為例)傳入agg()中。
import pandas as pd
data = [[‘a’, ‘A’, ‘1等’, 109, 144], [‘b’, ‘C’, ‘1等’, 112, 132], [‘c’, ‘A’, ‘1等’, 125, 137], [‘d’, ‘B’, ‘2等’, 120, 121],
[‘e’, ‘B’, ‘1等’, 126, 136], [‘f’, ‘B’, ‘2等’, 133, 127], [‘g’, ‘C’, ‘2等’, 124, 126], [‘h’, ‘A’, ‘1等’, 134, 125],
[‘i’, ‘C’, ‘2等’, 117, 125], [‘j’, ‘A’, ‘2等’, 128, 133], [‘h’, ‘B’, ‘1等’, 130, 122], [‘i’, ‘C’, ‘2等’, 122, 111]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = [‘name’, ‘class_1’, ‘class_2’, ‘num1’, ‘num2’]
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print(“===============================”)
max1 = lambda x: x.value_counts(dropna=False).index[0]
max1.name = “類別數量最多”
df1 = df.agg({‘class_1’: [max1],
‘num1’: [‘sum’, ‘mean’],
‘num2’: [‘sum’, ‘mean’]})
print(df1)
4. 通過 字典 和 Series 對象進行分組統(tǒng)計
=================================================================================================
**groupy()不僅僅可以傳入單個列,或多個列組成的列表,
也可以傳入一個字典或者一個Series來實現分組。**
4.1通過一個字典
自我介紹一下,小編13年上海交大畢業(yè),曾經在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現在。
深知大多數Python工程師,想要提升技能,往往是自己摸索成長或者是報班學習,但對于培訓機構動則幾千的學費,著實壓力不小。自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!
因此收集整理了一份《2024年Python開發(fā)全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。
既有適合小白學習的零基礎資料,也有適合3年以上經驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上Python開發(fā)知識點,真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新
如果你覺得這些內容對你有幫助,可以添加V獲?。簐ip1024c (備注Python)
做了那么多年開發(fā),自學了很多門編程語言,我很明白學習資源對于學一門新語言的重要性,這些年也收藏了不少的Python干貨,對我來說這些東西確實已經用不到了,但對于準備自學Python的人來說,或許它就是一個寶藏,可以給你省去很多的時間和精力。
別在網上瞎學了,我最近也做了一些資源的更新,只要你是我的粉絲,這期福利你都可拿走。
我先來介紹一下這些東西怎么用,文末抱走。
(1)Python所有方向的學習路線(新版)
這是我花了幾天的時間去把Python所有方向的技術點做的整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。
最近我才對這些路線做了一下新的更新,知識體系更全面了。
(2)Python學習視頻
包含了Python入門、爬蟲、數據分析和web開發(fā)的學習視頻,總共100多個,雖然沒有那么全面,但是對于入門來說是沒問題的,學完這些之后,你可以按照我上面的學習路線去網上找其他的知識資源進行進階。
(3)100多個練手項目
我們在看視頻學習的時候,不能光動眼動腦不動手,比較科學的學習方法是在理解之后運用它們,這時候練手項目就很適合了,只是里面的項目比較多,水平也是參差不齊,大家可以挑自己能做的項目去練練。
(4)200多本電子書
這些年我也收藏了很多電子書,大概200多本,有時候帶實體書不方便的話,我就會去打開電子書看看,書籍可不一定比視頻教程差,尤其是權威的技術書籍。
基本上主流的和經典的都有,這里我就不放圖了,版權問題,個人看看是沒有問題的。
(5)Python知識點匯總
知識點匯總有點像學習路線,但與學習路線不同的點就在于,知識點匯總更為細致,里面包含了對具體知識點的簡單說明,而我們的學習路線則更為抽象和簡單,只是為了方便大家只是某個領域你應該學習哪些技術棧。
(6)其他資料
還有其他的一些東西,比如說我自己出的Python入門圖文類教程,沒有電腦的時候用手機也可以學習知識,學會了理論之后再去敲代碼實踐驗證,還有Python中文版的庫資料、MySQL和HTML標簽大全等等,這些都是可以送給粉絲們的東西。
文章來源:http://www.zghlxwxcb.cn/news/detail-857686.html
這些都不是什么非常值錢的東西,但對于沒有資源或者資源不是很好的學習者來說確實很不錯,你要是用得到的話都可以直接抱走,關注過我的人都知道,這些都是可以拿到的。文章來源地址http://www.zghlxwxcb.cn/news/detail-857686.html
匯總**
知識點匯總有點像學習路線,但與學習路線不同的點就在于,知識點匯總更為細致,里面包含了對具體知識點的簡單說明,而我們的學習路線則更為抽象和簡單,只是為了方便大家只是某個領域你應該學習哪些技術棧。
(6)其他資料
還有其他的一些東西,比如說我自己出的Python入門圖文類教程,沒有電腦的時候用手機也可以學習知識,學會了理論之后再去敲代碼實踐驗證,還有Python中文版的庫資料、MySQL和HTML標簽大全等等,這些都是可以送給粉絲們的東西。
這些都不是什么非常值錢的東西,但對于沒有資源或者資源不是很好的學習者來說確實很不錯,你要是用得到的話都可以直接抱走,關注過我的人都知道,這些都是可以拿到的。
到了這里,關于python DataFrame數據分組統(tǒng)計groupby()函數的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!