选取某个分类占比最大的值,作为该分类的唯一值

        在日常的数据需求,我们的数据需求方——甲方巴巴可能会有这样的要求。从数据库中提取两部分数据进行对比。然而对比数据又不是唯一值,怎么确定唯一值是什么呢?就要求我们自己来计算。

        比如,我最近接到的一个数据需求。要求将**店铺,7月份,每个sku编码,单价数量占比最高的单价,来作为该sku编码唯一值,用于比对时的衡量标准。

我想到了两个解决方案:

1、使用EXcel来处理

  • 首先数据清洗,计算sku编码占比。只选择某个店铺某个月份的数据,并提取sku编码,单价,将所有数据去重,使用countifs()函数计数,再计算占比,字段呈现:sku编码,单价,个数,个数占比。

  • 其次找出sku占比的最大值。提取sku编码去重,使用maxifs()函数,找出最大的占比值,字段呈现:sku编码,最大占比。

  • 找出sku编码占比最大的单价。字段:使用vlookup()函数,合并sku编码&最大占比,查找单价,字段呈现:sku编码,单价。

2、Python来处理

data_7= data[(data['月份'] =='7月') & (data['店铺'] =='**订单')]  #多个条件的时候使用&,并且条件之间使用括号括起来关联
data_71 = data_7.groupby(by = ['sku编码','单价'])['订单号'].count().reset_index(drop = False)  #统计每个sku编码的数据量
data_71 = data_71.rename(columns ={'订单号':'数量'}) #重命名
data_71['占比'] = data_71['数量'] /data_71['数量'].sum()  #计算每个sku编码,单价的数据量占比
#使用降序排列,并且相同数字的,按照1234…命名。这样可以避免同一排名的对应多个
data_71['ranks'] = data_71.groupby(['sku编码'])['占比'].rank(method ='first',ascending =False).astype(int)  

# data_71.reset_index(drop =False)  #重置索引
data_72 = data_71[data_71['ranks'] == 1]  # 取排名第1的行,作为对比数据
data_72['占比'] = data_72['占比'].apply(lambda x: format(x,'.2%'))
print(data_72)
print(len(data_72))

结果呈现:

 至此,我们就完成了sku编码唯一值的提取。可以进行下面的操作了~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值