目標用戶偏好指數Target Group Index分析

 

目標用戶偏好指數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	000013.500	低客單
6	000979794.500	高客單
7	000xyx0	99.250	高客單
8	000米粒兒米粒0	24.500	低客單
9	0055679618	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	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章