python去重计数_用Python做透视表之value_sum和value_countdistinct功能

本文介绍了如何使用Python的pandas库实现类似Excel数据透视表的功能,包括计数、求和等操作。针对value_counts()函数无法直接实现去重计数的问题,提出了自定义函数df_value_countdistinct()来解决,同时分享了StackOverflow上的高效解决方案:使用groupby().nunique()进行去重计数。
摘要由CSDN通过智能技术生成

在pandas库中实现Excel的数据透视表效果通常用的是df['a'].value_counts()这个函数,表示统计数据框(DataFrame) df的列a各个元素的出现次数;例如对于一个数据表如pd.DataFrame({'a':['A','A','B','C','C','C'],'b':[1,2,3,4,5,6],'c':[11,11,12,13,13,14]}),Excel数据透视表与Python实现对比效果如下:Excel数据透视表与Python实现对比

就是对表df中的a列各个值出现的次数进行统计。

Pandas中的数据透视表各功能

用过Excel透视表功能的话我们知道,出了统计出现次数之外,还可以选择计算某行的求和、最大最小值、平均值等(数据透视表对于数值类型的列默认选求和,文本类型默认选计数),还是拿表df来说,excel的数据透视表可以计算a列的A、B、C三个元素对应的c列的求和(sum),但是pandas库并没有value_sum()这样的函数,pandas的sum函数是对整列求和的,例如df['b'].sum()是对b列求和,结果是21,和a列无关;所以我们可以自己按照根据a列分表再求和的思路去实现。自己造轮子的做法可以是:

def df_value_sum(df,by='a',s='b'):#by和s分别对应根据a列对b列的数求和

keys=set(df[by])

ss={}

for k in keys:

d=df.loc[df[by]==k]

ss[k]&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值