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

Pandas分組聚合之groupby()、agg()方法的使用教程

 更新時(shí)間:2023年01月29日 09:36:55   作者:胡桃の壺  
今天看到pandas的聚合函數(shù)agg,比較陌生,平時(shí)的工作中處理數(shù)據(jù)的時(shí)候使用的也比較少,為了加深印象,總結(jié)一下使用的方法,下面這篇文章主要給大家介紹了關(guān)于Pandas分組聚合之groupby()、agg()方法的使用教程,需要的朋友可以參考下

創(chuàng)建一個(gè)dataframe結(jié)構(gòu)

import pandas as pd

df = pd.DataFrame(
    data={
        'name': ['z_s', 'l_s', 'w_w', 'z_l', 'y_s', 'j_j', 'l_b', 'z_f', 'hs_q', 'lbl_k', 'qy_n', 'mg_n'],
        'score': [100, 97, 98, 89, 67, 59, 29, 87, 78, 89, 88, 80],
        'group': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
        'cls': ['A', 'A', 'A', 'B', 'B', 'B', 'A', 'A', 'A', 'B', 'B', 'B'],
        'height': [178.0, 180.0, 176.0, 182.0, 189.0, 190.0, 172.5, 175.0, 165.0, 160.0, 158.5, 159.0]
    },
    index=['stu_' + str(i) for i in np.arange(1, 13, 1)]
)
print('df:\n', df)

分組函數(shù) groupby()

初識(shí)分組聚合

我們可以通過(guò)DataFrame.groupby(by=[”column“]) 方法對(duì)數(shù)據(jù)進(jìn)行分組,再根據(jù)需求進(jìn)行 聚合操作。

統(tǒng)計(jì)各個(gè)班的最高的成績(jī):

# 先按照班級(jí)進(jìn)行分組,再統(tǒng)計(jì)各個(gè)組里面的成績(jī)的最大值!
ret = df.groupby(by=['cls'])['score'].max().reset_index()
print('ret:\n', ret)

分開來(lái)看就是:

ret = df.groupby(by=['cls'])	# 將數(shù)據(jù)以 cls 進(jìn)行分組,返回 DataFrameGroupBy 對(duì)象
print(ret)		# <pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002B6B2003A60>
ret = ret['score']				# 取出 score 列,返回 SeriesGroupBy 對(duì)象
print(ret)		# <pandas.core.groupby.generic.SeriesGroupBy object at 0x000002B6B59EAFD0>
ret = ret.max()					# 取出 score 中的最大值,返回 Series 對(duì)象
print(ret)
"""
cls
A    100
B     89
Name: score, dtype: int64
"""
ret = ret.reset_index()			# 重設(shè)索引,返回 DataFrame 對(duì)象
print(ret)
"""
  cls  score
0   A    100
1   B     89
"""

多重行索引分組聚合

統(tǒng)計(jì)各個(gè)班的各個(gè)小組的最高成績(jī)

# 先按照班級(jí)分組,再按照小組分組,最后統(tǒng)計(jì)各個(gè)小組內(nèi)成績(jī)的最大值
ret = df.groupby(by=['cls', 'group'])['score'].max()
print('ret:\n', ret)
print('index:\n', ret.index)	# MultiIndex ---多重行索引
ret = ret.reset_index()			# 重設(shè)索引
print(ret)

對(duì)多列數(shù)據(jù)進(jìn)行分組聚合

統(tǒng)計(jì)各個(gè)班級(jí)的成績(jī)、身高的平均值:

# 按照班級(jí)分組,統(tǒng)計(jì)各個(gè)組內(nèi) 成績(jī)、身高的平均值
ret = df.groupby(by=['cls'])[['score', 'height']].mean().reset_index()
print('ret:\n', ret)

綜合應(yīng)用

統(tǒng)計(jì)各個(gè)班級(jí)、各個(gè)小組的成績(jī)、身高的平均值

# 先按照班級(jí)分組、再按照小組分組---統(tǒng)計(jì)各個(gè)小組內(nèi)的成績(jī)的平均值、身高的平均值
ret = df.groupby(by=['cls', 'group'])[['score', 'height']].mean().reset_index()
print('ret:\n', ret)

聚合函數(shù) agg(aggregate)

在Pandas中,aggaggregate兩個(gè)函數(shù)指向同一個(gè)方法,使用時(shí)寫任意一個(gè)即可。

求 多列數(shù)據(jù) 的 多個(gè)指標(biāo)

統(tǒng)計(jì)成績(jī)、身高的最大值、均值

# 使用agg 方法 可以對(duì)多列數(shù)據(jù)一次性求出多個(gè)指標(biāo)
ret = df.loc[:, ['score', 'height']].agg([np.max, np.mean])
print('ret:\n', ret)

對(duì)多列數(shù)據(jù)統(tǒng)計(jì)不同的指標(biāo)

統(tǒng)計(jì)成績(jī)的均值、同時(shí)統(tǒng)計(jì)身高的最大值

ret = df.agg({'score': [np.mean], 'height': [np.max]})
print('ret:\n',ret)

對(duì)多列數(shù)據(jù)統(tǒng)計(jì)不同個(gè)數(shù)的指標(biāo)

統(tǒng)計(jì)成績(jī)的均值、最大值、中位數(shù) 和 身高的均值

ret = df.agg({'score': [np.mean, np.max, np.median], 'height': [np.mean]})
print('ret:\n', ret)

使用agg 方法也可以配合著 分組 對(duì)不同列、不同的數(shù)據(jù)、統(tǒng)計(jì)不同個(gè)數(shù)的 不同指標(biāo)!

ret = df.groupby(by=['cls']).agg({'height': [np.max,np.mean], 'score': [np.min]})
print('ret:\n', ret)

agg調(diào)用 自定義函數(shù)

ret = df.loc[:, 'score'].agg(lambda x: x + 1)
print('ret1:\n', ret)


def func_add_one(x):
    return x + 1

ret = df.loc[:, 'score'].agg(func_add_one)
print('ret2:\n', ret)

# 對(duì)多列 使用自定義函數(shù)
ret = df.loc[:, ['score', 'height']].agg(func_add_one)
print('ret3:\n', ret)

使用agg 調(diào)用numpy的統(tǒng)計(jì)指標(biāo)

# 統(tǒng)計(jì)所有同學(xué)成績(jī)的和
ret = df.loc[:, 'score'].agg(np.sum)
print('ret:\n',ret)
print('type:\n',type(ret))

# # 統(tǒng)計(jì)所有同學(xué) 成績(jī)以及身高 的和
ret = df.loc[:, ['score', 'height']].agg(np.sum)
print('ret:\n', ret)
print('type:\n',type(ret))

# 統(tǒng)計(jì)身高 + 成績(jī)(無(wú)意義的,只是為了演示能夠 同一行相加)
ret = df.loc[:, ['score', 'height']].agg(np.sum, axis=1)	# 使用axis指定相加的方向
print('ret:\n', ret)
print('type:\n',type(ret))

除了以上方法之外,還可以使用自定義方法聚合,可以參見(jiàn)我的這篇文章:Pandas使用自定義方法

總結(jié)

到此這篇關(guān)于Pandas分組聚合之groupby()、agg()方法使用的文章就介紹到這了,更多相關(guān)Pandas分組聚合groupby()、agg()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在numpy矩陣中令小于0的元素改為0的實(shí)例

    在numpy矩陣中令小于0的元素改為0的實(shí)例

    今天小編就為大家分享一篇在numpy矩陣中令小于0的元素改為0的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python如何將兩個(gè)三維模型(obj)合成一個(gè)三維模型(obj)

    Python如何將兩個(gè)三維模型(obj)合成一個(gè)三維模型(obj)

    這篇文章主要介紹了Python如何將兩個(gè)三維模型(obj)合成一個(gè)三維模型(obj)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python?VisPy庫(kù)高性能科學(xué)可視化圖形處理用法實(shí)例探究

    Python?VisPy庫(kù)高性能科學(xué)可視化圖形處理用法實(shí)例探究

    VisPy是一個(gè)用于高性能科學(xué)可視化的Python庫(kù),它建立在現(xiàn)代圖形處理單元(GPU)上,旨在提供流暢、交互式的數(shù)據(jù)可視化體驗(yàn),本文將深入探討VisPy的基本概念、核心特性以及實(shí)際應(yīng)用場(chǎng)景,并通過(guò)豐富的示例代碼演示其強(qiáng)大的可視化能力
    2023-12-12
  • python中cv2模塊安裝詳細(xì)圖文教程

    python中cv2模塊安裝詳細(xì)圖文教程

    在Python中cv2是OpenCV庫(kù)的一個(gè)模塊,這是一個(gè)開源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),下面這篇文章主要給大家介紹了關(guān)于python中cv2模塊安裝的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • Python中可復(fù)用函數(shù)的6種實(shí)踐

    Python中可復(fù)用函數(shù)的6種實(shí)踐

    為了實(shí)現(xiàn)可維護(hù)性,我們的Python函數(shù)應(yīng)該:小型、只做一項(xiàng)任務(wù);沒(méi)有重復(fù);有一個(gè)層次的抽象性;有一個(gè)描述性的名字和有少于四個(gè)參數(shù),下面我們就來(lái)看看這6個(gè)特性的實(shí)踐吧
    2023-08-08
  • Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程

    Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程

    django有默認(rèn)自帶的數(shù)據(jù)庫(kù),當(dāng)然也可以用其他的數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 詳解Java中一維、二維數(shù)組在內(nèi)存中的結(jié)構(gòu)

    詳解Java中一維、二維數(shù)組在內(nèi)存中的結(jié)構(gòu)

    這篇文章主要介紹了Java中一維、二維數(shù)組在內(nèi)存中的結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python通過(guò)cookie模擬已登錄狀態(tài)的初步研究

    python通過(guò)cookie模擬已登錄狀態(tài)的初步研究

    對(duì)于那些需要在登錄環(huán)境下進(jìn)行的爬蟲操作,模擬登陸或偽裝已登錄狀態(tài)是一個(gè)剛性需求。這篇文章主要介紹了python通過(guò)cookie模擬已登錄狀態(tài)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • python lambda的使用詳解

    python lambda的使用詳解

    這篇文章主要介紹了python lambda的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python如何查找特定名稱文件

    Python如何查找特定名稱文件

    這篇文章主要介紹了Python如何查找特定名稱文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

姚安县| 四平市| 吉木乃县| 中西区| 太和县| 石阡县| 台安县| 桐梓县| 北票市| 政和县| 盐池县| 成武县| 高雄县| 濮阳县| 绥宁县| 尼玛县| 伊金霍洛旗| 兴隆县| 昌乐县| 中卫市| 佛山市| 沂南县| 慈溪市| 龙江县| 大连市| 都江堰市| 海南省| 贡嘎县| 罗平县| 千阳县| 上思县| 泗阳县| 旬阳县| 诸暨市| 饶平县| 梅州市| 延吉市| 曲麻莱县| 广元市| 上犹县| 绥芬河市|