在資料分析處理中,對資料進行分組並對各組應用乙個函式(無論是聚合還是轉換)計算分組統計或生成透視表,是資料分析工作中的重要環節。
python提供了乙個靈活高效的groupby功能,它可以使你能以一種自然的方式對資料集進行切片、切塊、摘要等操作。在python中主要有兩個模組(itertools和pandas)提供了groupby方法。而pandas中的groupby功能尤為強大,可以根據乙個或多個鍵拆分pandas物件、應用組內轉換或其他運算,如規格化、線性回歸、排名或提取子集等。
下面先來說說itertools中的groupby使用:
itertools.groupby()函式將迭代器中的重複相鄰的數聚合在一起。
for key, group in groupby([1, 1, 3, 2, 2, 2, 4, 4, 4, 5]):
print(key, list(group))
(1, [1, 1])
(3, [3])
(2, [2, 2, 2])
(4, [4, 4, 4])
(5, [5])
也可以使用函式對挑選的規則進行個性化設定,只要作用於函式的兩個元素返回的值相等,這兩個元素就被認為是在一組的。比如下面要忽略大小寫挑選出相同字母:
for key, group in groupby(「aaabbbcccddd」, lambda x: x.upper()):
print(key, list(group))
(『a』, [『a』, 『a』, 『a』])
(『b』, [『b』, 『b』, 『b』])
(『c』, [『c』, 『c』, 『c』])
(『d』, [『d』, 『d』, 『d』])
使用乙個匿名函式使「a」和「a」都返回為「a」。然後再進行分組。
接下來,採用乙個例項講解groupby的用法。
設計乙個場景:要將乙個列表中所有連續的數字使用「-」連線,例如:[1,2,3]表示為[1-3]。
下面有乙個列表:l = [6, 7, 18, 19, 20, 21, 22, 24, 27, 33, 37]
按照上面的規則對這個l列表進行解析。
將採用值與索引的差進行分組。
l列表為:
[6, 7, 18, 19, 20, 21, 22, 24, 27, 33, 37]
l索引為:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
兩者相減為:
[6, 6, 16, 16, 16, 16, 16, 17, 19, 24, 27]
就可以對他進行分組了。
得到結果:[『6-7』, 『18-22』, 24, 27, 33, 37]
最後,講講pandas中的groupby技術,先來對groupby的技術原理用一張圖來說明:
假設要按***進行分組,並計算age列的平均值。實現該功能的方式很多,而這裡要用的是:訪問age,並根據***呼叫groupby:
grouped = data.age.groupby(data.***)
python資料分析之 資料聚合與分組運算
在資料庫中,我們可以對資料進行分類,聚合運算。例如groupby 操作。在 pandas 中同樣也有類似的功能。通過這些聚合,分組操作,我們可以很容易的對資料進行轉換,清洗,運算。比如如下圖,首先通過不同的鍵值進行分類,然後對各個分類進行求和運算。我們來看實際的例子,首先生成一組資料如下 df da...
pandas 高階處理 分組與聚合
分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況 想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!看其中的效果 案例 不同顏色的不同筆的 資料 col pd.dataframe color object p...
利用Python進行資料聚合和分組運算
created by darren chen created on 2018 8 2 import pandas as pd import numpy as np import os,time,sys 像sql這種結構化查詢語言所執行的分組運算的種類十分有限 分組鍵的多種形式 1 列表或陣列,其長度...