Pandas中的宝藏函数agg
来源:AI入门学习
作者:小伍哥
利用agg()函数可以进行更灵活的聚合操作
Pandas中的的agg()函数为aggregate的缩写,总数、合计、聚合的意思,是一个功能非常强大的函数,在Pandas中可以利用agg()对 Series 、 DataFrame 以及 groupby() 后的结果进行聚合操作。
该函数传入的参数为字典,键为变量名,值为对应的聚合函数字符串,譬如
{"value1":["sum","max"], "value2":["median","max","min]}
就代表对数据框中的value1列进行求和、最大值操作,对value2列进行中位数、最大值、最小值操作。
下面用几个简单的例子演示其具体使用方式,先构建一个基础的数据,用于下面的实验。 data = pd.DataFrame( {"company":["百度", "阿里", "百度", "阿里", "百度", "腾讯", "腾讯", "阿里", "腾讯", "阿里"], "level": ["P7", "P7", "P8", "P5", "P8", "P7", "P8", "P7", "P5", "P6"], "salary":[43000, 24000, 40000, 39000, 8000, 47000, 25000, 16000, 21000, 38000], "age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]}) 1、聚合Series
在对Series进行聚合时,因为只有1列,所以可以不使用字典的形式传递参数,直接传入函数名列表即可: 只计算工资列的最小值data["salary"].agg("min") 8000求工资列列的最小值、最大值以及中位数data["salary"].agg(["min","max","median"]) min 8000.0 max 47000.0 median 31500.0 Name: salary, dtype: float64
2、聚合数据框
对数据框进行聚合时因为有多列,所以要使用字典的方式传入聚合方案: data.agg({"level": ["max","min"], "salary": ["mean","std"]}) level salary max P8 NaN min P5 NaN mean NaN 30100.000000 std NaN 13016.655997
值得注意的是,因为上例中对于不同变量的聚合方案不统一,所以会出现NaN的情况。 3、聚合groupby()结果
求每个公司-每个层级工资的最大值、最小值、中位数 data.groupby(["company","level"]).agg({"salary":["min","max","median"]}) salary min max median company level 百度 P7 43000 43000 43000 P8 8000 40000 24000 腾讯 P5 21000 21000 21000 P7 47000 47000 47000 P8 25000 25000 25000 阿里 P5 39000 39000 39000 P6 38000 38000 38000 P7 16000 24000 20000 data.groupby(["company","level"]).agg({"salary":["min","max","median"]}).reset_index(drop=False) company level salary min max median 0 百度 P7 43000 43000 43000 1 百度 P8 8000 40000 24000 2 腾讯 P5 21000 21000 21000 3 腾讯 P7 47000 47000 47000 4 腾讯 P8 25000 25000 25000 5 阿里 P5 39000 39000 39000 6 阿里 P6 38000 38000 38000 7 阿里 P7 16000 24000 20000
可以注意到虽然我们使用reset_index()将索引列还原回变量,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()来为聚合后的每一列赋予新的名字: data.groupby(["company","level"]).agg( min_salary = pd.NamedAgg(column="salary", aggfunc="min"), max_salary = pd.NamedAgg(column="salary", aggfunc="max"), median = pd.NamedAgg(column="salary", aggfunc="median")).reset_index(drop=False) company level min_salary max_salary median 0 百度 P7 43000 43000 43000 1 百度 P8 8000 40000 24000 2 腾讯 P5 21000 21000 21000 3 腾讯 P7 47000 47000 47000 4 腾讯 P8 25000 25000 25000 5 阿里 P5 39000 39000 39000 6 阿里 P6 38000 38000 38000 7 阿里 P7 16000 24000 2000
手机慢速度快门平移跟拍旋转自我检讨8月24日晚上八点左右在小区北门路口拍摄设定值ISO2800,S18s平移跟拍ISO2800,S18s,感觉曝光过度。ISO2800,S18s,平移时间可以,旋转时未能旋转好平移还
手机慢速度快门旋转8月22日下午四点半左右在室内拍摄静物一张取得参数ISO1600,S121s要拍摄旋转需要慢速度经过换算ISO1600100一共大约四级光(1600,800,400,200,100
手机慢速度快门跟拍旋转自我检讨8月25日晚上七点半到小区北门路口拍摄跟拍旋转先设定ISO2800,S18s,后来快门速度降低为S15s,大体来说还是曝光过度,照片分享如附图。ISO2800,S18s,跟拍不稳定
手机慢速度快门跟拍旋转自我检讨8月28日晚上七点左右在小区北门路口拍摄平移跟拍旋转,照片分享如附图ISO200,S18s,跟拍显影不足,旋转太早,中心些许位移,可以考虑ISO100,S16s拍摄ISO200,S
朋友圈晒了下刚到手的6寸电脑,没想到朋友也看上了GPDMicroPC是最近在京东下单购买的一台迷你电脑,屏幕只有6寸,虽然在这个特殊时期,物流也还是很快就到了,到手第一时间当然就是开箱拍照,然后发朋友圈,没想到一个朋友居然也看上
商标热点丨脸书更名注册元商标猿辅导注册猿服道改行?1美国脸书公司上周宣布更名为元,未来将优先开展元宇宙相关业务。同时,脸书10月28日申请元商标,但在此之前,一家美国初创企业曾在今年8月申请元商标。2根据最新消息,杭州微念品牌管理
realme真我V13无惧长途旅程,超长续航很给力对于各位差旅党而言,每个时期总有那么几天,会化身为空人飞人,在不同城市之间尽显穿梭。尤其是遇到商务出差,手机必须时刻保持畅通,便于与客户进行及时的交流。不过遇到长达10几个小时的旅
从厨房菜鸟,到烹饪大厨,你只需要一步先抛出问题做一道好菜,需要多久?如果要正式的回答可能需要从了解菜谱,掌握火候开始,是漫长的学习过程!如果要不正式的回答,那只需一个烤箱就够!烤箱,想必很多人都用过,但当烤箱碰上AI
数字化转型智慧交锋,中欧校友会广州分会深入树根互联调研5月19日中欧(即中欧国际工商学院)校友会广州分会走进树根互联,来自制造化工金融服装医药生物等数十个行业的43家企业,超过60位代表到访,围绕未来制造业转变范式,以及企业全价值链数
复盘何同学,微博缘何成为事件引爆的舆论场?相信大家对前几天何同学刷屏的事都不陌生。作为顶流科技博主,时隔近三个月,老师好我叫何同学终于更新视频了。视频发出后,随即火爆全网,视频在微博播放量超2642万次,相关话题何同学ai
Razer推出搭载Windows11的RazerBook和雷蛇灵刃新款RazerBook及雷蛇灵刃15精英版今日发布,预装Windows11操作系统2021年10月5日,上海Razer,全球玩家生活方式潮流品牌(以下简称雷蛇,香港联合交易所股份代