Pandas 基础学习

文章目录

聚合

groupby

此处参考pandas的聚合操作: groupyby与agg
pandas提供基于行和列的聚合操作,groupby可理解为是基于行的,agg则是基于列的。
从实现上看,groupby返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如sum)之后,才会得到结构为Series的数据结果。
而agg是DataFrame的直接方法,返回的也是一个DataFrame。当然,很多功能用sum、mean等等也可以实现。但是agg更加简洁, 而且传给它的函数可以是字符串,也可以自定义,参数是column对应的子DataFrame。
以下图数据为例column_map.head(8)
在这里插入图片描述
column_map.groupby(['work_order','work_station']) 表示按照前两个属性聚合。
这里会输出一个聚合类
<pandas.core.groupby.DataFrameGroupBy object at 0x111242630>
我们再调用一个类的函数
wo_ws_group = column_map.groupby(['work_order','work_station']) wo_ws_group.size()
在这里插入图片描述
新出现的列对应着每个工序工位下面有多少条记录
但是我们可以发现它的格式已经和我们平时使用的DataFrame不太一样了,我们可以使用下面的命令解决。
wo_ws_group.size().reset_index()
在这里插入图片描述
查看相关分组有以下命令
wo_ws_group.loc["0","11"] 查看工序工位分别为0和11的size。
wo_ws_group.get_group('0','11').head(8) 查看工序工位分别为0和11的记录
wo_ws_group['range_low'].idmin() 获取分组结果某一列的最小索引
wo_ws_group['work_order'].apply(lambda x:2*x).head(8) 应用apply做二次处理

agg

如下数据
data = pd.DataFrame([[2,11],[1,23],[5,11],[1.3,44],[5,111]],columns = ['price','quantity'],dtype = float)
在这里插入图片描述
data.agg({'price':['sum','mean'],'quantity':['sum']})计算汇总或者均值
在这里插入图片描述
也可以自定义函数输入agg
在这里插入图片描述
在这里插入图片描述
我们用另外一个数据集看下groupby和agg联合使用
参考自详解pandas数据分析之groupby分组聚合(下)

在这里插入图片描述
数据字段说明
1、platform:用户使用的终端设备类型,分pc端、m端、ios端、android端。
2、sku:某款特点商品的唯一编号。
3、expose_num:商品sku的累计曝光数。
4、click_num:商品sku的累计点击数。
5、cart_num:商品sku的累计加购数。
6、collect_num:商品sku的累计收藏数。
7、order_num:商品sku的累计下单数。

统计不同sku的总曝光:
1.以字典格式传入要聚合的字段和聚合函数:df.groupby('sku').agg({'expose_num':'sum'})
在这里插入图片描述
2.将聚合的字段作为索引,聚合函数传入agg
df.groupby('sku')['expose_num'].agg(np.sum)
在这里插入图片描述
3.直接将函数名作为字符串传入agg
df.groupby('sku')['expose_num'].agg('sum')
在这里插入图片描述
4.直接使用sum()函数
df.groupby('sku')['expose_num'].sum()
在这里插入图片描述
同时支持多字段分组和多字段聚合,这里不详细说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值