目标用户偏好指数Target Group Index分析

TGI指数,全称Target Group Index,可以反映目标群体在特定研究范围内强势或者弱势。

TGI指数计算公式 = 目标群体中具有某一特征的群体所占比例 / 总体中具有相同特征的群体所占比例 * 标准数100

TGI指数大于100,代表着某类用户更具有相应的倾向或者偏好,数值越大则倾向和偏好越强。

示例

假设我们要研究A公司脱发TGI指数:

某一特征,就是我们想要分析的某种行为或者状态,这里是脱发(或者说受脱发困扰) 总体,是我们研究的所有对象,即A公司所有人 目标群体,是总体中我们感兴趣的一个分组,假设我们关注的分组是数据部,那目标群体就是数据部

于是乎,公式中分子“目标群体中具有某一特征的群体所占比例”可以理解为“数据部脱发人数占数据部的比例”,假设数据部有15个人,有9个人受脱发困扰,那数据部脱发人数占比就是9/15,等于60%。

而分母“总体中具有相同特征的群体所占比例”,等同于“全公司受脱发困扰人数占公司总人数的比例”,假设公司一共500人,有120人受脱发困扰,那这个比例是24%。

所以,数据部脱发TGI指数,可以用60% / 24% * 100 = 250,其他部门脱发TGI指数计算逻辑是一样的,用本部门脱发人数占比 / 公司脱发人数占比 * 100即可。

开发环境:jupyter Notebook, python 3.6

一:数据概览

import pandas as pd
import numpy as np
import os os.chdir('F:\\50mat') df = pd.read_excel('TGI指数案例数据.xlsx.xlsx')
df.head()

打印结果

品牌名称	买家昵称	付款日期	订单状态	实付金额	邮费	省份	城市	购买数量
0 一只阿木木 做快淘饭 2019-04-18 00:03:00 交易成功 22.32 0 北京 北京市 1
1 一只阿木木 作自有世祟 2019-02-17 00:03:51 交易成功 87.00 0 上海 上海市 1
2 一只阿木木 作雪白室 2019-04-18 00:01:43 交易成功 97.66 0 福建省 福州市 2
3 一只阿木木 作美女购物主 2019-01-11 23:35:01 交易成功 37.23 0 河南省 安阳市 3
4 一只阿木木 作美女购物主 2019-02-18 14:16:03 交易成功 29.50 0 河南省 安阳市 2

观察数据的类型和缺失情况:

df.info()

打印结果

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 57664 entries, 0 to 57663
Data columns (total 9 columns):
品牌名称 57664 non-null object
买家昵称 57664 non-null object
付款日期 57664 non-null datetime64[ns]
订单状态 57664 non-null object
实付金额 57664 non-null float64
邮费 57664 non-null int64
省份 57664 non-null object
城市 57664 non-null object
购买数量 57664 non-null int64
dtypes: datetime64[ns](1), float64(1), int64(2), object(5)
memory usage: 2.9+ MB

二:数据清洗

def if_high(x):
if x > 50:
return '高客单'
else:
return '低客单' gp_user = df.groupby('买家昵称')['实付金额'].mean().reset_index()
gp_user['客单类型'] = gp_user['实付金额'].apply(if_high)
gp_user.head(10)

打印结果

买家昵称	实付金额	客单类型
0 .blue_ram 49.450 低客单
1 .blue_ram1 491.450 高客单
2 .christiny 22.000 低客单
3 .willn1 34.570 低客单
4 .托托m 37.475 低客单
5 0000妮 13.500 低客单
6 0009797王 94.500 高客单
7 000xyx0 99.250 高客单
8 000米粒儿米粒0 24.500 低客单
9 00556旭79618 23.860 低客单

匹配城市,合并数据

# 去重
df_dup = df.loc[df.duplicated('买家昵称') == False,:] #合并
df_merge = pd.merge(gp_user, df_dup, left_on = '买家昵称', right_on = '买家昵称', how = 'left')
df_merge.head()

高客单用户指数计算

# 高客单 TG 指数计算
df_merge = df_merge[['买家昵称', '客单类型', '省份', '城市']]

result = pd.pivot_table(df_merge, index = ['省份', '城市'], columns = '客单类型', aggfunc = 'count')
result.head()

打印结果

		买家昵称
客单类型 低客单 高客单
省份 城市
上海 上海市 2818.0 2375.0
云南省 临沧市 3.0 2.0
丽江市 1.0 3.0
保山市 6.0 2.0
大理白族自治州 9.0 8.0

三:构建用户指数

result['买家昵称']['高客单'].reset_index().head()

打印结果

省份	城市	高客单
0 上海 上海市 2375.0
1 云南省 临沧市 2.0
2 云南省 丽江市 3.0
3 云南省 保山市 2.0
4 云南省 大理白族自治州 8.0

用户合并

# 高客单与低客单用户合并
tgi = pd.merge(result['买家昵称']['高客单'].reset_index(), result['买家昵称']['低客单'].reset_index(),
left_on = ['省份', '城市'], right_on = ['省份', '城市'], how = 'inner')
tgi['总人数'] = tgi['高客单'] + tgi['低客单']
tgi['高客单占比'] = tgi['高客单'] / tgi['总人数']
tgi.head()

打印结果

省份	城市	高客单	低客单	总人数	高客单占比
0 上海 上海市 2375.0 2818.0 5193.0 0.457346
1 云南省 临沧市 2.0 3.0 5.0 0.400000
2 云南省 丽江市 3.0 1.0 4.0 0.750000
3 云南省 保山市 2.0 6.0 8.0 0.250000
4 云南省 大理白族自治州 8.0 9.0 17.0 0.470588

去除空值

total_percentage = tgi['高客单'].sum() / tgi['总人数'].sum()
total_percentage

打印结果

0.41537333024476875

四:目标用户指数计算

# tgi 指数计算, 并排序

tgi['高客单tgi指数'] = tgi['高客单占比'] / total_percentage * 100
tgi = tgi.sort_values('高客单tgi指数', ascending = False)
tgi.head(10)

打印结果

省份	城市	高客单	低客单	总人数	高客单占比	高客单tgi指数
149 新疆维吾尔自治区 哈密市 4.0 1.0 5.0 0.800000 192.597825
152 新疆维吾尔自治区 巴音郭楞蒙古自治州 10.0 3.0 13.0 0.769231 185.190216
2 云南省 丽江市 3.0 1.0 4.0 0.750000 180.560461
277 甘肃省 白银市 3.0 1.0 4.0 0.750000 180.560461
34 吉林省 辽源市 2.0 1.0 3.0 0.666667 160.498188
44 四川省 广安市 6.0 3.0 9.0 0.666667 160.498188
136 广西壮族自治区 河池市 4.0 2.0 6.0 0.666667 160.498188
25 内蒙古自治区 锡林郭勒盟 2.0 1.0 3.0 0.666667 160.498188
343 黑龙江省 鹤岗市 2.0 1.0 3.0 0.666667 160.498188
97 山西省 临汾市 9.0 5.0 14.0 0.642857 154.766109
# 保留总人数大于平均值的城市

tgi.loc[tgi['总人数'] > tgi['总人数'].mean(), :].head(10)

打印结果

省份	城市	高客单	低客单	总人数	高客单占比	高客单tgi指数
287 福建省 福州市 145.0 135.0 280.0 0.517857 124.672699
124 广东省 珠海市 49.0 52.0 101.0 0.485149 116.798186
27 北京 北京市 1203.0 1298.0 2501.0 0.481008 115.801271
283 福建省 厦门市 105.0 118.0 223.0 0.470852 113.356343
111 广东省 佛山市 118.0 135.0 253.0 0.466403 112.285293
173 江西省 南昌市 63.0 73.0 136.0 0.463235 111.522638
46 四川省 成都市 287.0 334.0 621.0 0.462158 111.263236
0 上海 上海市 2375.0 2818.0 5193.0 0.457346 110.104909
164 江苏省 无锡市 135.0 162.0 297.0 0.454545 109.430582
120 广东省 深圳市 438.0 528.0 966.0 0.453416 109.158705
你从结果中发现了什么呢?

七:数据分析模型

# 目标用户偏好指数Target Group Index分析

import pandas as pd
import numpy as np
import os os.chdir('F:\\50mat') def get_rfm(name):
# 一:数据概览
df = pd.read_excel('TGI指数案例数据.xlsx') gp_user = df.groupby('买家昵称')['实付金额'].mean().reset_index()
gp_user['客单类型'] = gp_user['实付金额'].apply(if_high) # 二:数据清洗
df_dup = df.loc[df.duplicated('买家昵称') == False,:]
#合并
df_merge = pd.merge(gp_user, df_dup, left_on = '买家昵称', right_on = '买家昵称', how = 'left') # 三:构建用户指数
# 高客单 TG 计算
df_merge = df_merge[['买家昵称', '客单类型', '省份', '城市']]
result = pd.pivot_table(df_merge, index = ['省份', '城市'], columns = '客单类型', aggfunc = 'count') # 高客单与低客单用户合并
tgi = pd.merge(result['买家昵称']['高客单'].reset_index(), result['买家昵称']['低客单'].reset_index(),
left_on = ['省份', '城市'], right_on = ['省份', '城市'], how = 'inner') # 构建分子
tgi['总人数'] = tgi['高客单'] + tgi['低客单']
tgi['高客单占比'] = tgi['高客单'] / tgi['总人数']
# 高客单和低客单都有空值,应删除
tgi = tgi.dropna() # 构建分母
total_percentage = tgi['高客单'].sum() / tgi['总人数'].sum() # 四:TGI 指数计算, 并排序
tgi['高客单TGI指数'] = tgi['高客单占比'] / total_percentage * 100
tgi = tgi.sort_values('高客单tgi指数', ascending = False) # 保留总人数大于平均值的城市
result_tgi = tgi.loc[tgi['总人数'] > tgi['总人数'].mean(), :]
return result_tgi def if_high(x):
if x > 50:
return '高客单'
else:
return '低客单' res = get_rfm(name = 'TGI指数案例数据.xlsx')
res

打印结果

省份	城市	高客单	低客单	总人数	高客单占比	高客单tgi指数
287 福建省 福州市 145.0 135.0 280.0 0.517857 124.672699
124 广东省 珠海市 49.0 52.0 101.0 0.485149 116.798186
27 北京 北京市 1203.0 1298.0 2501.0 0.481008 115.801271
283 福建省 厦门市 105.0 118.0 223.0 0.470852 113.356343
111 广东省 佛山市 118.0 135.0 253.0 0.466403 112.285293
173 江西省 南昌市 63.0 73.0 136.0 0.463235 111.522638
46 四川省 成都市 287.0 334.0 621.0 0.462158 111.263236
0 上海 上海市 2375.0 2818.0 5193.0 0.457346 110.104909
164 江苏省 无锡市 135.0 162.0 297.0 0.454545 109.430582
120 广东省 深圳市 438.0 528.0 966.0 0.453416 109.158705
112 广东省 广州市 535.0 654.0 1189.0 0.449958 108.326153
216 浙江省 温州市 100.0 124.0 224.0 0.446429 107.476465
215 浙江省 杭州市 318.0 396.0 714.0 0.445378 107.223579
170 江苏省 镇江市 39.0 50.0 89.0 0.438202 105.496000
285 福建省 泉州市 57.0 77.0 134.0 0.425373 102.407426
244 湖北省 武汉市 275.0 373.0 648.0 0.424383 102.168985
267 湖南省 长沙市 108.0 149.0 257.0 0.420233 101.170064
87 山东省 济南市 80.0 111.0 191.0 0.418848 100.836558
159 江苏省 南通市 61.0 85.0 146.0 0.417808 100.586193
214 浙江省 宁波市 121.0 169.0 290.0 0.417241 100.449728
7 云南省 昆明市 71.0 100.0 171.0 0.415205 99.959398
306 辽宁省 大连市 94.0 133.0 227.0 0.414097 99.692707
212 浙江省 台州市 45.0 65.0 110.0 0.409091 98.487524
221 浙江省 金华市 51.0 74.0 125.0 0.408000 98.224891
130 广西壮族自治区 南宁市 54.0 79.0 133.0 0.406015 97.747016
158 江苏省 南京市 235.0 354.0 589.0 0.398981 96.053669
100 山西省 太原市 65.0 99.0 164.0 0.396341 95.418130
337 黑龙江省 哈尔滨市 85.0 132.0 217.0 0.391705 94.301930
113 广东省 惠州市 36.0 56.0 92.0 0.391304 94.205458
213 浙江省 嘉兴市 59.0 93.0 152.0 0.388158 93.447958
310 辽宁省 沈阳市 113.0 180.0 293.0 0.385666 92.847928
58 天津 天津市 203.0 335.0 538.0 0.377323 90.839588
161 江苏省 常州市 62.0 105.0 167.0 0.371257 89.379230
299 贵州省 贵阳市 47.0 80.0 127.0 0.370079 89.095451
168 江苏省 苏州市 183.0 312.0 495.0 0.369697 89.003540
66 安徽省 合肥市 76.0 131.0 207.0 0.367150 88.390306
328 陕西省 西安市 111.0 200.0 311.0 0.356913 85.925879
36 吉林省 长春市 49.0 89.0 138.0 0.355072 85.482730
319 重庆 重庆市 161.0 298.0 459.0 0.350763 84.445125
188 河北省 石家庄市 49.0 92.0 141.0 0.347518 83.663949
109 广东省 中山市 29.0 56.0 85.0 0.341176 82.137308
96 山东省 青岛市 90.0 174.0 264.0 0.340909 82.072937
218 浙江省 绍兴市 46.0 89.0 135.0 0.340741 82.032407
116 广东省 汕头市 31.0 60.0 91.0 0.340659 82.012810
208 河南省 郑州市 78.0 159.0 237.0 0.329114 79.233282
108 广东省 东莞市 87.0 197.0 284.0 0.306338 73.750047
92 山东省 烟台市 24.0 76.0 100.0 0.240000 57.779348

By:一只阿木木

目标用户偏好指数Target Group Index分析的更多相关文章

  1. 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

    摘要:自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷.这不,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用. 上次借着高考热点整 ...

  2. SAP Marketing Cloud功能简述(二) : Target Group

    这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profi ...

  3. 【Qt官方例程学习笔记】Application Example(构成界面/QAction/退出时询问保存/用户偏好载入和保存/文本文件的载入和保存/QCommandLineParser解析运行参数)

    The Application example shows how to implement a standard GUI application with menus, toolbars, and ...

  4. SharePoint 2013 更新多个用户字段(Person or Group)

    有时我们需要更新一个用户到Person or Group类型的字段, 当然这个属性允许设置多个用户, 要如何才能添加新的用户到该字段,同时还不影响原始存在的值. 这里我们需要了解 SPFieldUse ...

  5. Android 保存用户偏好设置

    很多情况下都允许用户根据自己的习惯和爱好去设置软件,而我们需要保存这些设置,可以用一个专业保存用户偏好的类:SharedPreferences. 这个类是实现方法其实也就是创建和修改 XML 文件, ...

  6. 转:Hive性能优化之ORC索引–Row Group Index vs Bloom Filter Index

    之前的文章<更高的压缩比,更好的性能–使用ORC文件格式优化Hive>中介绍了Hive的ORC文件格式,它不但有着很高的压缩比,节省存储和计算资源之外,还通过一个内置的轻量级索引,提升查询 ...

  7. 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析

    漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析 - FreeBuf互联网安全新媒体平台 https: ...

  8. 报错注入分析之(count()、rand()、group by)分析,被大佬称为floor报错注入

    PS:在这几天的学习当中很多的文章都将此注入方式称之为“floor报错分析”但经过我这几天的学习.个人觉得不该如此称呼!若君有意请详细阅读此篇文章.特别感谢米怀特的开导,说句实在的研究这个注入有四天了 ...

  9. 待字闺中之Magic Index 分析

    给定一个数组A,当中有一个位置被称为Magic Index,含义是:如果i是Magic Index.则A[i] = i. 如果A中的元素递增有序.且不反复,请给出方法,找到这个Magic Index. ...

随机推荐

  1. Nginx_配置文件解读及模板

    Nginx 介绍 # nginx的最大优势在于处理静态文件和代理转发功能,支持7层负载均衡和故障隔离. 动静分离是每个网站发展到一定规模之后必然的结果.静态请求则应当最好将其拆分,并启用独立的域名,既 ...

  2. django项目班笔记-注册功能

    目录 一.用户模型设计 1.用户表字段分析 2.用户模式设计 二.执行迁移 三.图形验证码 四.将图形验证加入到前端文件中 验证码生成源码:https://files.cnblogs.com/file ...

  3. Nginx的下载与安装

    .创建文件输入网页中需要复制的 cat >/etc/yum.repos.d/nginx.repo<<EOF [nginx-stable] name=nginx stable repo ...

  4. 如何将EXCEL两列比较后不重复的数据复制到另一列上

    Q1:我有两列数据,需要做重复性比较,比较完后需要将不重复的数据提取出来自成一列,请问该如何操作? 假如你要比较A列与B列数据是否重复,应该有三种结果(即AB皆有,A有B无,B有A无),可在C列存放A ...

  5. wireshark的过滤命令

    1.ip.addr == 192.168.1.1 这种是目标地址和源地址都是 后面指定的IP

  6. VS编译release版本的出现的LNK1104 无法打开文件“libboost_filesystem-vc140-mt-1_58.lib

    最近在用restbed和vs2015做一个项目,debug编译的没问题,但是编译release就有问题,困扰了一天,说下我的出坑过程. 1.我用到了外部的库 restbed ,首先要想正确编译过,你的 ...

  7. SpringBoot开发二十-Redis入门以及Spring整合Redis

    安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...

  8. 用C#实现一个百度万年历

    目录 背景 实现步骤 关键点 结束语 背景 命理学是对人生命运规律的探索,以人的各式各样的数字(出生年月日.姓名笔划等)来推测人的性格与命运并占卜推测未来会发生的事情.古今中外都有相关方面的理论,中国 ...

  9. python后端面试第五部分:Linux操作系统--长期维护

    ##################     Linux操作系统      ####################### 1,讲一下你常用的Linux/git命令和作用: 2,查看当前进程是用什么命 ...

  10. auto uninstaller (autodesk 修复大师) 简体中文版 更新下载地址

    小伙伴是不是遇到 CAD/3dmax/maya/Revit/Inventor 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,CAD/3dmax/maya/Revit/Inven ...