最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?DataFrame數(shù)據(jù)分組統(tǒng)計(jì)groupby()函數(shù)的使用

 更新時(shí)間:2022年03月10日 09:14:44   作者:侯小啾  
在python的DataFrame中對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)主要使用groupby()函數(shù),本文主要介紹了python?DataFrame數(shù)據(jù)分組統(tǒng)計(jì)groupby()函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下

groupby()函數(shù)

在python的DataFrame中對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)主要使用groupby()函數(shù)。

1. groupby基本用法

1.1 一級(jí)分類_分組求和

import pandas as pd
data = [['a', 'A', 109], ['b', 'B', 112], ['c', 'A', 125], ['d', 'C', 120],
        ['e', 'C', 126], ['f', 'B', 133], ['g', 'A', 124], ['h', 'B', 134],
        ['i', 'C', 117], ['j', 'C', 128]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
columns = ['name', 'class', 'num']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("=================================================")
df1 = df.groupby('class').sum()       # 分組統(tǒng)計(jì)求和
print(df1)

在這里插入圖片描述

1.2 二級(jí)分類_分組求和

給groupby()傳入一個(gè)列表,列表中的元素為分類字段,從左到右分類級(jí)別增大。(一級(jí)分類、二級(jí)分類…)

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', 'class_2']).sum()       # 分組統(tǒng)計(jì)求和
print(df1)

在這里插入圖片描述

1.3 對(duì)DataFrameGroupBy對(duì)象列名索引(對(duì)指定列統(tǒng)計(jì)計(jì)算)

其中,df.groupby(‘class_1’)得到一個(gè)DataFrameGroupBy對(duì)象,對(duì)該對(duì)象可以使用列名進(jìn)行索引,以對(duì)指定的列進(jìn)行統(tǒng)計(jì)。
如: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)

代碼運(yùn)行結(jié)果同上。

2. 對(duì)分組數(shù)據(jù)進(jìn)行迭代

2.1 對(duì)一級(jí)分類的DataFrameGroupBy對(duì)象進(jìn)行遍歷

for name, group in DataFrameGroupBy_object

其中,name指分類的類名,group指該類的所有數(shù)據(jù)。

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("===============================")

# 獲取目標(biāo)數(shù)據(jù)。
df1 = df[['name', 'class_1', 'num']]
for name, group in df1.groupby('class_1'):
        print(name)
        print("=============================")
        print(group)
        print("==================================================")

在這里插入圖片描述

在這里插入圖片描述

2.2 對(duì)二級(jí)分類的DataFrameGroupBy對(duì)象進(jìn)行遍歷

對(duì)二級(jí)分類的DataFrameGroupBy對(duì)象進(jìn)行遍歷,
for (key1, key2), group in df.groupby([‘class_1’, ‘class_2’]) 為例
不同于一級(jí)分類的是, (key1, key2)是一個(gè)由多級(jí)類別組成的元組,而group表示該多級(jí)分類類別下的數(shù)據(jù)。

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("==================================================")

程序運(yùn)行結(jié)果如下:

在這里插入圖片描述

在這里插入圖片描述

(部分)

3. agg()函數(shù)

使用groupby()函數(shù)和agg()函數(shù) 實(shí)現(xiàn) 分組聚合操作運(yùn)算。

3.1一般寫法_對(duì)目標(biāo)數(shù)據(jù)使用同一聚合函數(shù)

以 分組求均值、求和 為例

給agg()傳入一個(gè)列表

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 對(duì)不同列使用不同聚合函數(shù)

給agg()方法傳入一個(gè)字典

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 自定義函數(shù)寫法

也可以自定義一個(gè)函數(shù)(以名為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__ = "類別數(shù)量最多"
df1 = df.agg({'class_1': [max1],
        'num1': ['sum', 'mean'],
        'num2': ['sum', 'mean']})
print(df1)

在這里插入圖片描述

4. 通過 字典 和 Series 對(duì)象進(jìn)行分組統(tǒng)計(jì)

groupy()不僅僅可以傳入單個(gè)列,或多個(gè)列組成的列表,
也可以傳入一個(gè)字典或者一個(gè)Series來實(shí)現(xiàn)分組。

4.1通過一個(gè)字典

import pandas as pd
data = [['A', 10000, 20121, 14521, 20, 23, 4, 5000],
        ['B', 12000, 12541, 11220, 14, 25, 5, 6000],
        ['C', 21420, 26452, 34215, 25, 24, 4, 5266],
        ['D', 21025, 23155, 31251, 23, 26, 6, 6452],
        ['E', 30021, 23512, 21452, 30, 27, 5, 7525],
        ['F', 32152, 30214, 26321, 32, 30, 7, 6952]]
columns = ['公司', 'a產(chǎn)品產(chǎn)量', 'b產(chǎn)品產(chǎn)量', 'c產(chǎn)品產(chǎn)量', '搬運(yùn)工數(shù)量', '推銷員數(shù)量', '經(jīng)理數(shù)量', '平均工資']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, columns=columns)
df = df.set_index(['公司'])
print(df)
print("===============================")

mapping = {
    'a產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量', 'b產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量',
    'c產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量', '搬運(yùn)工數(shù)量': '人員數(shù)量',
    '推銷員數(shù)量': '人員數(shù)量', '經(jīng)理數(shù)量': '人員數(shù)量',
    '平均工資': '平均工資'
}

df1 = df.groupby(mapping, axis=1).sum()
print(df1)

程序運(yùn)行結(jié)果:

在這里插入圖片描述

4.2通過一個(gè)Series

import pandas as pd
data = [['A', 10000, 20121, 14521, 20, 23, 4, 5000],
        ['B', 12000, 12541, 11220, 14, 25, 5, 6000],
        ['C', 21420, 26452, 34215, 25, 24, 4, 5266],
        ['D', 21025, 23155, 31251, 23, 26, 6, 6452],
        ['E', 30021, 23512, 21452, 30, 27, 5, 7525],
        ['F', 32152, 30214, 26321, 32, 30, 7, 6952]]
columns = ['公司', 'a產(chǎn)品產(chǎn)量', 'b產(chǎn)品產(chǎn)量', 'c產(chǎn)品產(chǎn)量', '搬運(yùn)工數(shù)量', '推銷員數(shù)量', '經(jīng)理數(shù)量', '平均工資']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, columns=columns)
df = df.set_index(['公司'])
print(df)
print("===============================")

data = {
    'a產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量', 'b產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量',
    'c產(chǎn)品產(chǎn)量': '產(chǎn)品產(chǎn)量', '搬運(yùn)工數(shù)量': '人員數(shù)量',
    '推銷員數(shù)量': '人員數(shù)量', '經(jīng)理數(shù)量': '人員數(shù)量',
    '平均工資': '平均工資'
}
s1 = pd.Series(data)
df1 = df.groupby(s1, axis=1).sum()
print(df1)

程序運(yùn)行結(jié)果:

在這里插入圖片描述

參考資源: python數(shù)據(jù)分析從入門到精通 明日科技編著 清華大學(xué)出版社

到此這篇關(guān)于python DataFrame數(shù)據(jù)分組統(tǒng)計(jì)groupby()函數(shù)的使用的文章就介紹到這了,更多相關(guān)python DataFrame groupby() 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)讀取excel表格詳解方法

    python實(shí)現(xiàn)讀取excel表格詳解方法

    python操作excel主要用到xlrd和xlwt兩個(gè)庫(kù),xlrd讀取表格數(shù)據(jù),支持xlsx和xls格式的excel表格;xlwt寫入excel表格數(shù)據(jù)
    2022-07-07
  • python中內(nèi)置函數(shù)range詳解

    python中內(nèi)置函數(shù)range詳解

    Python內(nèi)置函數(shù)range()是一個(gè)用于生成一系列連續(xù)的整數(shù)的函數(shù),它常用于循環(huán)結(jié)構(gòu)中,用于指定循環(huán)的次數(shù)或迭代的范圍,這篇文章主要介紹了python之內(nèi)置函數(shù)range,需要的朋友可以參考下
    2023-07-07
  • Python實(shí)現(xiàn)冒泡排序算法的示例解析

    Python實(shí)現(xiàn)冒泡排序算法的示例解析

    冒泡排序(Bubble Sort)是一種簡(jiǎn)單的排序算法。本文將詳細(xì)為大家講講Python實(shí)現(xiàn)冒泡排序算法的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • Python方差特征過濾的實(shí)例分析

    Python方差特征過濾的實(shí)例分析

    在本篇文章里小編給大家整理了一篇關(guān)于Python方差特征過濾的實(shí)例分析內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-08-08
  • python3 實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)連接池的示例代碼

    python3 實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)連接池的示例代碼

    這篇文章主要介紹了python3 實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)連接池的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python將文本中的空格替換為換行的方法

    python將文本中的空格替換為換行的方法

    這篇文章主要介紹了python將文本中的空格替換為換行的方法,需要的朋友可以參考下
    2018-03-03
  • ?Python?匿名函數(shù)lambda?詳情

    ?Python?匿名函數(shù)lambda?詳情

    這篇文章主要介紹了?Python?匿名函數(shù)lambda,??lambda?????函數(shù)返回函數(shù)本身而不是將其賦值給一個(gè)變量名。所以它也被稱為匿名函數(shù),下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • 基于Python開發(fā)一個(gè)選擇題訓(xùn)練工具

    基于Python開發(fā)一個(gè)選擇題訓(xùn)練工具

    選擇題作為一種高效的方式被廣泛應(yīng)用于各類培訓(xùn)與考試中,為了幫助學(xué)生高效學(xué)習(xí)與自測(cè),本篇文章將采用Python編寫一款基于?Python?開發(fā)的選擇題訓(xùn)練工具,需要的可以參考下
    2024-12-12
  • pytorch中Schedule與warmup_steps的用法說明

    pytorch中Schedule與warmup_steps的用法說明

    這篇文章主要介紹了pytorch中Schedule與warmup_steps的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 如何對(duì)python的字典進(jìn)行排序

    如何對(duì)python的字典進(jìn)行排序

    在本篇文章里小編給大家整理了關(guān)于python的字典進(jìn)行排序方法,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06

最新評(píng)論

子长县| 中西区| 自治县| 沿河| 台湾省| 东平县| 民乐县| 钟祥市| 渑池县| 茶陵县| 上虞市| 会昌县| 田东县| 修武县| 庆安县| 乐陵市| 安新县| 长宁县| 子洲县| 崇州市| 瑞金市| 青田县| 晋州市| 南木林县| 蒙城县| 台湾省| 福泉市| 繁昌县| 万全县| 天峻县| 台安县| 道真| 宁远县| 乌拉特中旗| 江孜县| 扶余县| 保康县| 永德县| 博爱县| 武穴市| 东莞市|