python计算指数函数,TGI分析
点击原文看精彩赛程!
作者吹牛z
来源数据不吹牛(ID:shujubuchuiniu)
这是Python数据分析在实战中的首例。详细解释了TGI指数,并用Python代码实现了基本的TGI偏好分析。
经常会有一些专业的数据分析报告会提到TGI指数,比如“基于某某TGI指数,我们发现部分用户偏好XX”。对于那些不熟悉TGI定义的人来说,如果你看到类似的东西,那一定是云山雾罩。这次,我们来谈谈什么是TGI指数,以及如何用案例数据实现简单的TGI偏好分析。
网上搜索,对于TGI指数,百科解释为——TGI指数,全称目标群体指数,可以反映目标群体在特定研究范围内的强弱。
很好,这个解释正式揭示了特长,特长中弥漫着晦涩,让人看得懂,看得懂。粗略地翻译,TGI指数是反应偏好的指标。这仍然不够清楚。我们用公式来理解一下。
TGI指数计算公式=具有某一特征的群体在目标群体中的比例/具有相同特征的群体在整个人口中的比例*标准数100
你更晕吗?只是头晕!不,我们在说什么?
01 指标拆解
在TGI计算公式中,有三个关键点需要进一步分解:某个特征、人群和目标群体。
举个栗子的例子。假设我们想研究A公司脱发的TGI指数:
某个特征就是我们要分析的某个行为或状态,这里是脱发(或患脱发)。
总体来说,就是我们研究的所有对象,也就是a公司的业主。
目标群体是我们感兴趣的群体。假设我们关注的群体是数据部门,那么目标群体就是数据部门。
于是,公式中的分子“目标群体中具有某种特征的群体比例”可以理解为“数据部脱发比例”。假设数据部有15个人,有9个人被脱发困扰,那么数据部脱发的比例就是9/15,等于60%。
分母“具有相同特征的群体占整体的比例”相当于“全公司患脱发的人数占公司总人数的比例”。假设公司有500人,120人脱发,比例为24%。
因此,数据部的脱发TGI指数可以是60%/24% * 100=250。其他部门脱发TGI指数的计算逻辑是一样的,可以用本部门脱发比例/本公司脱发比例* 100。
TGI指数大于100,意味着一些用户有更多相应的倾向或偏好。值越大,倾向和偏好越强。如果小于100,说明这类用户的关联倾向较弱(与平均值相比);等于100意味着处于平均水平。
在刚才的例子中,我们捏造数据部门的脱发TGI指数是250,远远高于100。看来数据上的脱发风险极高,数据才是发际线的真正驱动力。
下面我们就通过一个案例巩固一下概念上的理解,顺便和熊猫比一比。
02 TGI实例分析
项目背景
BOSS扔出一个订单明细,“pcddw,我们最近要推出一个客户清单高的产品,打算先在部分城市试用。看看这个数据,哪些城市的人客户名单偏好度高,请帮我筛选出五个”。
Pcddw迅速打开表单,查看数据的真实情况:
订单数据包括品牌名称、买家姓名、付款时间、订单状态和地区等字段。总共有28832条数据,没有空值。
粗略看了一下源数据,pcddw很快理清了数据需求:“领导,更高客户名单的定义是什么?”
“就我们的产品线和历史数据来看,单笔采购大于50元的视为高阶客户”。
确定了高客单之后,我们的目标很明确:根据高客单偏好对城市进行排序。这里的偏好可以用TGI指数来衡量。让我们再来回顾一下TGI的三个核心观点:
特点,客户订单高,即客户单笔购买超过50元。
目标群体是每个城市。在这里,我们可以计算客户的高阶偏好
至于整体,很直白。所有参与计算的客户都是整体。
解决问题的关键是计算不同城市高端旅客的数量和比例。
单个用户打标
第一步,我们先判断每个用户是否属于高客户人群,所以先按昵称分组,看每个用户的平均付费金额。这里用的是平均,因为有的客户买了很多次,每单金额不一样,所以是平均。
然后,定义一个判断函数。单个用户平均支付金额大于50的,标记为“高客户名单”;否则,它是低客户列表,然后用apply函数调用它:
至此,用户基于高低客户名单的初步标记已经完成。
匹配城市
单个用户和客人列表标签的数量已经固定。下一步是补充每个用户的地理字段,这可以通过一个pd.merge函数来固定。由于源数据未进行重复数据消除,我们必须先按昵称对其进行重复数据消除,否则匹配结果中会有许多重复数据:
高客单TGI指数计算
要计算每个城市高端客票的TGI指数,需要得到每个城市高端客票和低端客票的数量。如果用EXCEL透视表来处理,就很简单了。将省市直接拖到行的位置,将客人列表类别拖到列的位置。你可以选择任何领域,只要是统计学。
不用慌,这套操作在Python中也很容易实现。pivot_table透视函数可以在一行中完成:
这个结果包含了层次索引,由于篇幅限制,我们就不说了。只要知道要通过索引得到“高客单”列,就需要先索引“买家昵称”,再索引“高客单”:
这样得到每个省市的高客单数量,再得到低客单数量进行横向整合:
让我们看看每个城市的总人数和高客单人数的比例来完成分子“目标群体中具有某种特征的群体比例”的计算:
在一些非常小的城市,高或低的乘客数等于1甚至没有,这些值尤其是空值会影响结果的计算。我们必须提前检查数据:
果然,高低客名单都有空值(可以理解为0),导致总人数也有空值,TGI指数对空值的意义不大,所以我们剔除空值的行:
然后,统计高客单人群在总人数中的比例,以基准“具有相同特征的群体在总人口中的比例”公式中的分母:
最后一步是计算TGI指数。顺便安排一下顺序:
结果pcddw急着第一时间向老板汇报。在按下enter键之前,他扫了一眼数据,发现了一个严重的问题:TGI指数排名靠前的城市的客户总数几乎不超过10个,这完全没有说服力。
TGI指数可以显示偏好的强弱,但人们容易忽略具体的样本量,这一点需要特别注意。
我该怎么办?为了加强数据整体的可靠性,pcddw决定先筛选总人数,以总人数的平均值为阈值,只保留总人数大于平均值的城市:
经过处理,pcddw觉得这个数据合理多了。
“报告老板,根据各个城市的TGI指数,我发现福州、珠海、北京、厦门和佛山是乘客名单偏好度最高的前5个城市!我们想尝试新的高端产品,我们只能从客户的角度优先考虑!”
而数据源和代码github的地址是:https://github.com/seizeeveryday/DA-cases/tree/master/TGI.
(本文由Python大本营转载,转载请联系原作者)
精彩推荐
早鸟票限量5折!
2019中国大数据技术大会(BDTC)又来了!豪华主席阵容与百位技术专家齐聚,15 场精选专场技术与行业论坛,超强干货+技术剖析+行业实践立体解读深入剖析行业热点技术实践。
推荐阅读
5必知图算法,用Python代码实现
如何利用爬虫技术帮助孩子秒到达心仪的幼儿园(基础部分)
我把你点的每一个“看”都当真当成喜欢了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。