中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas中groupby操作如何實現

發布時間:2023-02-14 09:18:19 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“pandas中groupby操作如何實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“pandas中groupby操作如何實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、實驗目的

熟練掌握pandas中的groupby操作

二、實驗原理

groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)

參數說明:

  • by是指分組依據(列表、字典、函數,元組,Series)

  • axis:是作用維度(0為行,1為列)

  • level:根據索引級別分組

  • sort:對groupby分組后新的dataframe中索引進行排序,sort=True為升序,

  • as_index:在groupby中使用的鍵是否成為新的dataframe中的索引,默認as_index=True

  • group_keys:在調用apply時,將group鍵添加到索引中以識別片段

  • squeeze :如果可能的話,減少返回類型的維數,否則返回一個一致的類型

grouping操作(split-apply-combine)

數據的分組&聚合 – 什么是groupby 技術?

在數據分析中,我們往往需要在將數據拆分,在每一個特定的組里進行運算。比如根據教育水平和年齡段計算某個城市的工作人口的平均收入。

pandas中的groupby提供了一個高效的數據的分組運算。

我們通過一個或者多個分類變量將數據拆分,然后分別在拆分以后的數據上進行需要的計算

我們可以把上述過程理解為三部:

1.拆分數據(split)

2.應用某個函數(apply)

3.匯總計算結果(aggregate)

下面這個演示圖展示了“分拆-應用-匯總”的groupby思想

pandas中groupby操作如何實現

上圖所示,分解步驟:

Step1 :數據分組—— groupby 方法

Step2 :數據聚合:

使用內置函數——sum / mean / max / min / count等
使用自定義函數—— agg ( aggregate ) 方法
自定義更豐富的分組運算—— apply 方法

三、實驗環境

Python 3.6.1

Jupyter

四、實驗內容

練習pandas中的groupby的操作案例

五、實驗步驟

1.創建一個數據幀df。

import numpy as np  
import pandas as pd  
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})  
print(df)

pandas中groupby操作如何實現

2.通過A列對df進行分布操作。

df.groupby('A')

pandas中groupby操作如何實現

3.通過A、B列對df進行分組操作。

df.groupby(['A','B'])

pandas中groupby操作如何實現

4…使用自定義函數進行分組操作,自定義一個函數,使用groupby方法并使用自定義函數給定的條件,按列對df進行分組。

def get_letter_type(letter):  
    if letter.lower() in 'aeiou':  
        return 'vowel'  
    else:  
        return 'consonant'  
  
grouped = df.groupby(get_letter_type, axis=1)  
for group in grouped:  
    print(group)

pandas中groupby操作如何實現

5.創建一個Series名為s,使用groupby根據s的索引對s進行分組,返回分組后的新Series,對新Series進行first、last、sum操作。

lst = [1, 2, 3, 1, 2, 3]  
s = pd.Series([1, 2, 3, 10, 20, 30], lst)  
grouped = s.groupby(level=0)  
#查看分組后的第一行數據  
grouped.first()  
#查看分組后的最后一行數據  
grouped.last()  
#對分組的各組進行求和  
grouped.sum()

pandas中groupby操作如何實現

6.分組排序,使用groupby進行分組時,默認是按分組后索引進行升序排列,在groupby方法中加入sort=False參數,可以進行降序排列。

df2=pd.DataFrame({'X':['B','B','A','A'],'Y':[1,2,3,4]})  
#按X列對df2進行分組,并求每組的和  
df2.groupby(['X']).sum()  
#按X列對df2進行分組,分組時不對鍵進行排序,并求每組的和  
df2.groupby(['X'],sort=False).sum()

pandas中groupby操作如何實現

7.使用get_group方法得到分組后某組的值。

df3 = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]})  
#按X列df3進行分組,并得到A組的df3值  
df3.groupby(['X']).get_group('A')  
#按X列df3進行分組,并得到B組的df3值  
df3.groupby(['X']).get_group('B')

pandas中groupby操作如何實現

8.使用groups方法得到分組后所有組的值。

df.groupby('A').groups  
df.groupby(['A','B']).groups

pandas中groupby操作如何實現

9.多級索引分組,創建一個有兩級索引的Series,并使用兩個方法對Series進行分組并求和。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  
index=pd.MultiIndex.from_arrays(arrays,names=['first','second'])  
s=pd.Series(np.random.randn(8),index=index)  
s.groupby(level=0).sum()  
s.groupby(level='second').sum()

pandas中groupby操作如何實現

10.復合分組,對s按first、second進行分組并求和。

s.groupby(level=['first', 'second']).sum()

pandas中groupby操作如何實現

11.復合分組(按索引和列),創建數據幀df,使用索引級別和列對df進行分組。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  
index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])  
df = pd.DataFrame({'A': [1, 1, 1, 1, 2, 2, 3, 3], 'B': np.arange(8)},index=index)  
print(df)  
df.groupby([pd.Grouper(level=1),'A']).sum()

pandas中groupby操作如何實現

12.對df進行分組,將分組后C列的值賦值給grouped,統計grouped中每類的個數。

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})  
grouped=df.groupby(['A'])  
grouped_C=grouped['C']  
print(grouped_C.count())

pandas中groupby操作如何實現

13.對上面創建的df的C列,按A列值進行分組并求和。

df['C'].groupby(df['A']).sum()

pandas中groupby操作如何實現

14.遍歷分組結果,通過A,B兩列對df進行分組,分組結果的組名為元組。

for name, group in df.groupby(['A', 'B']):  
    print(name)  
    print(group)

pandas中groupby操作如何實現

15.通過A列對df進行分組,并查看分組對象的bar列。

df.groupby(['A']).get_group(('bar'))

pandas中groupby操作如何實現

16.按A,B兩列對df進行分組,并查看分組對象中bar、one都存在的部分。

df.groupby(['A','B']).get_group(('bar','one'))

pandas中groupby操作如何實現

注意:當分組按兩列來分時,查看分組對象也應該包含每列的一部分。

17.聚合操作,按A列對df進行分組,使用聚合函數aggregate求每組的和。

grouped=df.groupby(['A']) grouped.aggregate(np.sum)

pandas中groupby操作如何實現

按A、B兩列對df進行分組,并使用聚合函數aggregate對每組求和。

grouped=df.groupby(['A'])  
grouped.aggregate(np.sum)

pandas中groupby操作如何實現

注意:通過上面的結果可以看到。聚合完成后每組都有一個組名作為新的索引,使用as_index=False可以忽略組名。

18.當as_index=True時,在groupby中使用的鍵將成為新的dataframe中的索引。按A、B兩列對df進行分組,這是使參數as_index=False,再使用聚合函數aggregate求每組的和.

grouped=df.groupby(['A','B'],as_index=False)  
grouped.aggregate(np.sum)

pandas中groupby操作如何實現

19.聚合操作,按A、B列對df進行分組,使用size方法,求每組的大小。返回一個Series,索引是組名,值是每組的大小。

grouped=df.groupby(['A','B'])  
grouped.size()

pandas中groupby操作如何實現

20.聚合操作,對分組grouped進行統計描述。

grouped.describe()

pandas中groupby操作如何實現

注意:聚合函數可以減少數據幀的維度,常用的聚合函數有:mean、sum、size、count、std、var、sem 、describe、first、last、nth、min、max。
執行多個函數在一個分組結果上:在分組返回的Series中我們可以通過一個聚合函數的列表或一個字典去操作series,返回一個DataFrame。

讀到這里,這篇“pandas中groupby操作如何實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆回县| 共和县| 耿马| 图们市| 南涧| 三江| 旬邑县| 密云县| 西藏| 江西省| 包头市| 崇信县| 三台县| 龙口市| 六盘水市| 游戏| 长垣县| 隆林| 七台河市| 台中市| 玉田县| 和龙市| 嫩江县| 沁水县| 梁河县| 永胜县| 凌云县| 广河县| 团风县| 汕头市| 安宁市| 和田县| 乃东县| 夏邑县| 永城市| 三江| 呼和浩特市| 伊宁县| 合江县| 福海县| 斗六市|