Python數(shù)據(jù)分析必知必會(huì):TGI指數(shù)
這是Python數(shù)據(jù)分析實(shí)戰(zhàn)的第一個(gè)案例,詳細(xì)解讀TGI指數(shù),并用Python代碼實(shí)現(xiàn)基礎(chǔ)的TGI偏好分析。
經(jīng)常有一些專(zhuān)業(yè)的數(shù)據(jù)分析報(bào)告,會(huì)提到TGI指數(shù),例如“基于某某TGI指數(shù),我們發(fā)現(xiàn)某類(lèi)用戶(hù)更偏好XX”。對(duì)于不熟悉TGI定義的同學(xué),看到類(lèi)似的話(huà)一定是云山霧罩。這次,我們就來(lái)聊一聊什么是TGI指數(shù)以及怎么樣結(jié)合案例數(shù)據(jù)實(shí)現(xiàn)簡(jiǎn)單的TGI偏好分析。
內(nèi)事不決網(wǎng)上搜,對(duì)于TGI指數(shù),百科是這樣解釋的——TGI指數(shù),全稱(chēng)Target Group Index,可以反映目標(biāo)群體在特定研究范圍內(nèi)強(qiáng)勢(shì)或者弱勢(shì)。
很好,這個(gè)解釋官方中透漏著專(zhuān)業(yè),專(zhuān)業(yè)中彌漫著晦澀,晦澀的讓人似懂非懂。粗暴翻譯下來(lái),TGI指數(shù)是反應(yīng)偏好的一種指標(biāo)。這樣還是不夠清楚,我們結(jié)合公式理解一下。
TGI指數(shù)計(jì)算公式 = 目標(biāo)群體中具有某一特征的群體所占比例 / 總體中具有相同特征的群體所占比例 * 標(biāo)準(zhǔn)數(shù)100
是不是更暈了?暈就對(duì)了!不暈我們還聊啥呢?
01 指標(biāo)拆解
TGI計(jì)算公式中,有三個(gè)關(guān)鍵點(diǎn)需要進(jìn)一步拆解:某一特征,總體,目標(biāo)群體。
隨便舉個(gè)栗子,假設(shè)我們要研究A公司脫發(fā)TGI指數(shù):
某一特征,就是我們想要分析的某種行為或者狀態(tài),這里是脫發(fā)(或者說(shuō)受脫發(fā)困擾)
總體,是我們研究的所有對(duì)象,即A公司所有人
目標(biāo)群體,是總體中我們感興趣的一個(gè)分組,假設(shè)我們關(guān)注的分組是數(shù)據(jù)部,那目標(biāo)群體就是數(shù)據(jù)部
于是乎,公式中分子“目標(biāo)群體中具有某一特征的群體所占比例”可以理解為“數(shù)據(jù)部脫發(fā)人數(shù)占數(shù)據(jù)部的比例”,假設(shè)數(shù)據(jù)部有15個(gè)人,有9個(gè)人受脫發(fā)困擾,那數(shù)據(jù)部脫發(fā)人數(shù)占比就是9/15,等于60%。
而分母“總體中具有相同特征的群體所占比例”,等同于“全公司受脫發(fā)困擾人數(shù)占公司總?cè)藬?shù)的比例”,假設(shè)公司一共500人,有120人受脫發(fā)困擾,那這個(gè)比例是24%。
所以,數(shù)據(jù)部脫發(fā)TGI指數(shù),可以用60% / 24% * 100 = 250,其他部門(mén)脫發(fā)TGI指數(shù)計(jì)算邏輯是一樣的,用本部門(mén)脫發(fā)人數(shù)占比 / 公司脫發(fā)人數(shù)占比 * 100即可。
TGI指數(shù)大于100,代表著某類(lèi)用戶(hù)更具有相應(yīng)的傾向或者偏好,數(shù)值越大則傾向和偏好越強(qiáng);小于100,則說(shuō)明該類(lèi)用戶(hù)相關(guān)傾向較弱(和平均相比);而等于100則表示在平均水平。
剛才的例子中,我們瞎掰的數(shù)據(jù)部脫發(fā)TGI指數(shù)是250,遠(yuǎn)遠(yuǎn)高于100,看來(lái)搞數(shù)據(jù)的脫發(fā)風(fēng)險(xiǎn)極高,數(shù)據(jù)才是真正的發(fā)際線(xiàn)推手。
下面,我們通過(guò)一個(gè)案例來(lái)鞏固概念理解,順便和潘大師(Pandas)過(guò)過(guò)招。
02 TGI實(shí)例分析
項(xiàng)目背景
BOSS拋來(lái)一份訂單明細(xì),“小Z啊,我們最近要推出一款客單比較高的產(chǎn)品,打算在一些城市先試銷(xiāo),你看看這個(gè)數(shù)據(jù),哪些城市的人有高客單偏好,幫我篩選5個(gè)吧”。
小Z趕緊打開(kāi)表格,看看數(shù)據(jù)到底長(zhǎng)什么樣子:

訂單數(shù)據(jù)包括品牌名、買(mǎi)家姓名、付款時(shí)間、訂單狀態(tài)和地域等字段,一共28832條數(shù)據(jù),沒(méi)有空值。
粗略看了幾眼源數(shù)據(jù),小Z趕緊明確數(shù)據(jù)需求:“領(lǐng)導(dǎo),那客單比較高的定義是什么?”
“就我們產(chǎn)品線(xiàn)和歷史數(shù)據(jù)來(lái)看,單次購(gòu)買(mǎi)大于50元就算高客單的客戶(hù)了”。
確認(rèn)了高客單之后,我們的目標(biāo)非常明確:按照高客單偏好給城市做個(gè)排序。這里的偏好,可以用TGI指數(shù)來(lái)衡量,我們?cè)俅螐?fù)習(xí)下TGI三個(gè)核心點(diǎn):
- 特征,高客單,即客戶(hù)單次購(gòu)買(mǎi)超過(guò)50元
- 目標(biāo)群體,就是各個(gè)城市,這里我們可以分別計(jì)算出所有城市客戶(hù)的高客單偏好
- 至于總體,就非常直白了,計(jì)算所涉及到的所有客戶(hù)即為總體
解題的關(guān)鍵在于,計(jì)算出不同城市,高客單人數(shù)及所占的比例。
單個(gè)用戶(hù)打標(biāo)
第一步,我們先判斷每個(gè)用戶(hù)是否屬于高客單的人群,所以先按用戶(hù)昵稱(chēng)進(jìn)行分組,看每位用戶(hù)的平均支付金額。這里用平均,是因?yàn)橛械目蛻?hù)多次購(gòu)買(mǎi),而每次下單金額也不一樣,故平均之。

接著,定義一個(gè)判斷函數(shù),如果單個(gè)用戶(hù)平均支付金額大于50,就打上“高客單”的類(lèi)別,否則為低客單,再用apply函數(shù)調(diào)用:

到這里基于高低客單的用戶(hù)初步打標(biāo)已經(jīng)完成。
匹配城市
單個(gè)用戶(hù)的金額和客單標(biāo)簽已經(jīng)搞定,下一步就是補(bǔ)充每個(gè)用戶(hù)的地域字段,一句pd.merge函數(shù)就能搞定。由于源數(shù)據(jù)是未去重的,我們得先按昵稱(chēng)去重,不然匹配的結(jié)果會(huì)有許多重復(fù)的數(shù)據(jù):

高客單TGI指數(shù)計(jì)算
要計(jì)算每個(gè)城市高客單TGI指數(shù),需要得到每個(gè)城市高客單、低客單的人數(shù)分別是多少。如果用EXCEL的數(shù)據(jù)透視表處理起來(lái)就很簡(jiǎn)單,直接把省份和城市拖拽到行的位置,客單類(lèi)別拖到列的位置,值隨便選一個(gè)字段,只要是統(tǒng)計(jì)就好。
不要慌,這一套操作,Python實(shí)現(xiàn)起來(lái)也灰常容易,pivot_table透視表函數(shù)一行就搞定:

這樣得到的結(jié)果包含了層次化索引,受篇幅限制就不展開(kāi)講,我們只要知道要索引得到“高客單”列,需要先索引“買(mǎi)家昵稱(chēng)”,再索引“高客單”:

這樣,拿到了每個(gè)省市的高客單人數(shù),然后再拿到低客單的人數(shù),進(jìn)行橫向合并:

我們?cè)倏纯疵總€(gè)城市總?cè)藬?shù)以及高客單人數(shù)占比,來(lái)完成“目標(biāo)群體中具有某一特征的群體所占比例”這個(gè)分子的計(jì)算:

有些非常小眾的城市,高客單或者低客單人數(shù)等于1甚至沒(méi)有,而這些值尤其是空值會(huì)影響結(jié)果的計(jì)算,我們要提前檢核數(shù)據(jù):

果然,高客單和低客單都有空值(可以理解為0),從而導(dǎo)致總?cè)藬?shù)也存在空值,而TGI指數(shù)對(duì)于空值來(lái)說(shuō)意義不大,所以我們剔除掉存在空值的行:
接著統(tǒng)計(jì)總?cè)藬?shù)中,高客單人群的比例,來(lái)對(duì)標(biāo)公式中的分母“總體中具有相同特征的群體所占比例”:

最后一步,就是TGI指數(shù)的計(jì)算,順便排個(gè)序:

出了結(jié)果,小Z興致勃勃的打算第一時(shí)間報(bào)告老板,說(shuō)時(shí)遲那時(shí)快,在按下回車(chē)之前又掃了一眼數(shù)據(jù),發(fā)現(xiàn)了一個(gè)嚴(yán)重的問(wèn)題:高客單TGI指數(shù)排名靠前的城市,總客戶(hù)數(shù)幾乎不超過(guò)10人,這樣的高客單人口占比,完全沒(méi)有說(shuō)服力。
TGI指數(shù)能夠顯示偏好的強(qiáng)弱,但很容易讓人忽略具體的樣本量大小,這個(gè)是需要格外注意的。
怎么辦呢?為了加強(qiáng)數(shù)據(jù)整體的信度,小Z決定先對(duì)總?cè)藬?shù)進(jìn)行篩選,用總?cè)藬?shù)的平均值作為閾值,只保留總?cè)藬?shù)大于平均值的城市:

處理之后,小Z覺(jué)得這份數(shù)據(jù)合理多了。





























