项目背景
不吹牛集团这几年孵化了50个品牌,在各渠道做了大量品宣层面的曝光。现在集团首席吹牛官提了两个需求:
1. 要一张大表,包含每个月搜索人数TOP5的品牌相关数据,以及对应品牌在当月的搜索份额和排名。
2. 在现有数据基础上,找到最近一年投放效果还不错的品牌,要吹吹牛,做年度表彰。
这是小z特别准备的两个具有代表性的需求:
- 第一种:业务方已经定好了条条框框,需要数据分析师做的是取数和处理的工作,这样的“分析”工作,坑往往在于取数和清洗的复杂性。
- 第二种:业务方自己想了个模糊的方向,需要分析师结合实际数据,定逻辑,给建议。
数据预览
话音未落,集团首席吹牛官的跟屁虫就把相关源数据丢过来了
一共24张Excel表格,按月存储,涵盖了从2019年1月到2020年12月的数据。
表格内部数据大同小异:
注:点击人数和支付人数,都是在搜索人数基础上统计的
每张表都有50个品牌,包括了品牌名、品牌搜索人数、点击人数和对应的支付人数这几个关键字段。
源数据就是这样简简单单中又透漏着麻麻烦烦,接下来,我们就开始手撕需求。
项目一:Python批量操作
开始动手前,我们要明确需求。
再回顾一下首席吹牛官的第一个需求:要一张大表,包含每个月搜索人数TOP5品牌的相关数据,以及对应品牌在当月的搜索份额和排名。
提炼:在现有源数据的基础上,我们还需要对各品牌月内按搜索人数排序,然后计算每个品牌搜索份额,取其前5,最后遍历汇总。
自动化之哥曾经说过:Python批量操作Excel,无论表格再多,处理逻辑再复杂,只要我们集中力量击破一张,就能够实现批量操作的全面胜利。
首先,我们要解决的是单张表的问题。
按搜索人数排序:
调用rank快速给到对应的排名:
再来计算搜索份额,搜索份额的计算公式:单品牌搜索人数/所有品牌搜索人数汇总,用Pandas计算,怎一个easy了的!
正当我们准备批量执行操作,首席吹牛官发来了消息:
“需求一略有调整,投资人最关注的是凌云这个品牌,要求在汇总表中,每个月凌云品牌的相关指标排在最前面,后面跟着搜索排名TOP5的品牌”。
具体排名逻辑如图所示:
面对需求的临时改动,见过大风大浪的我们内心没有一丝波澜,甚至还有一点想笑。小事一桩,改改Pandas逻辑就好了。
先找到目标品牌凌云:
再按照顺延的逻辑,定位TOP5品牌相关数据:
合并即可获取我们想要的结果: