網站首頁 編程語言 正文
pandas中的agg函數
python中的agg函數通常用于調用groupby()函數之后,對數據做一些聚合操作,包括sum,min,max以及其他一些聚合函數
如下所示:
>>> df = pd.read_excel(r"D:/myExcel/1.xlsx")
>>> df
? ? ? ? A ? B ? C
0 ? ? bob ?12 ?45
1 ?millor ?15 ?23
2 ? ? bob ?34 ?88
3 ? ? bob ?98 ?23
(1)獲取按A分組后B列的最大值
>>> df.groupby(by='A').agg({'B':'max'})
? ? ? ? ?B
A ? ? ? ??
bob ? ? 98
millor ?15
(2)獲取按A分組后B列的最大值和最小值
>>> df.groupby(by='A').agg({'B':['max','min']})
? ? ? ? ?B ? ?
? ? ? ?max min
A ? ? ? ? ? ??
bob ? ? 98 ?12
millor ?15 ?15
(3)獲取按A分組后B列的最大值和最小值以及C列的最大值
>>> df.groupby(by='A').agg({'B':['max','min'], 'C':'min'})
? ? ? ? ?B ? ? ? C
? ? ? ?max min min
A ? ? ? ? ? ? ? ??
bob ? ? 98 ?12 ?23
millor ?15 ?15 ?23
(4)默認是以函數名稱命名的,可以修改
>>> df.groupby(by='A').agg(
b_min=pd.NamedAgg(column='B', aggfunc='min'),
b_max=pd.NamedAgg(column='B', aggfunc='max'))
? ? ? ? b_min ?b_max
A ? ? ? ? ? ? ? ? ??
bob ? ? ? ?12 ? ? 98
millor ? ? 15 ? ? 15
通常在調用完agg函數后需要reset_index,因為pandas會默認將groupby()的列也做為index傳到結果中
>>> df.groupby('A').B.agg(['min', 'max'])
? ? ? ? min ?max
A ? ? ? ? ? ? ??
bob ? ? ?12 ? 98
millor ? 15 ? 15
>>> df.groupby('A').B.agg(['min', 'max']).reset_index()
? ? ? ? A ?min ?max
0 ? ? bob ? 12 ? 98
1 ?millor ? 15 ? 15
這就是python小工具關于agg函數的介紹,挺有用 的一個函數。?
pandas詳解 聚合運算agg()
在數據分析中,分組聚合二者缺一不可。對數據聚合(求和、平均值等)通常是不可避免的。pd.agg()很方便進行聚合操作。
1. 創建DataFrame對象
import pandas as pd
df1 = pd.DataFrame({'sex':list('FFMFMMF'),'smoker':list('YNYYNYY'),'age':[21,30,17,37,40,18,26],'weight':[120,100,132,140,94,89,123]})
grouped = df1.groupby(['sex','smoker'])
# sex有 F M 二值,smoker有 Y N 二值,故分成四組。
2. 單列聚合
grouped['age'].agg('mean')
sex smoker
F N 30.0
Y 28.0
M N 40.0
Y 17.5
Name: age, dtype: float64
3. 多列聚合
grouped.agg('mean')
4. 多種聚合運算
grouped['age'].agg(['min','max'])
5. 多種聚合運算并更改列名
grouped['age'].agg([('A','mean'),('B','max')])
6. 不同的列運用不同的聚合函數
grouped.agg({'age':['sum','mean'], 'weight':['min','max']})
7. 使用自定義的聚合函數
def Max_cut_Min(group):
return group.max()-group.min()
grouped.agg(Max_cut_Min)
8. 方便的descibe
grouped.describe()
原文鏈接:https://blog.csdn.net/weixin_45144170/article/details/105008350
相關推薦
- 2022-11-09 從零開始使用gradle配置即可執行的Hook庫詳解_Android
- 2022-03-24 樹莓派搭建nas服務器的詳細過程_Linux
- 2022-12-23 Android中Intent與Bundle的使用詳解_Android
- 2022-08-20 Python超詳細講解元類的使用_python
- 2023-07-26 TypeScript中的聯合類型、類型別名、接口、類型斷言
- 2022-06-15 Go?interface?接口的最佳實踐經驗分享_Golang
- 2022-06-12 Python多線程的使用詳情_python
- 2022-04-14 Qt自定義控件實現儀表盤_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支