首页 > 编程知识 正文

python数据分析实战,恶意代码分析实战

时间:2023-05-05 01:07:04 阅读:236555 作者:1302

本次实战的目的主要是了解TGI指数的定义,并在用户订单信息数据集上利用python实现简单的TGI指数偏好分析

一、背景 1、相关知识

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

关键字:特征,总体,目标群体

特点:TGI指数大于100,代表某类用户更具有相应的偏好和倾向,数值越大则偏好和倾向越强;小于100,则说明该类用户相关倾向较弱,小于平均水准;而等于100,则恰好和总体水平保持一致

2、实战案例

因最近正退出一款客单价较高的产品,需要筛选出哪些城市具有高客单偏好进行试销,选出5个城市即可

客单价>50即可认为是高客单,

结合上述提到的TGI关键字,这里特征即为高客单,总体为数据集中所有城市,目标群体是细分到每个城市,再去计算每个城市(目标群体)的TGI指数

 

二、分析过程 1、理解数据

数据共有28832行9列,并且数据完整,没有缺失值,不需要做数据清洗

2、分析思路

计算每位买家的客单价--》分类打标签为高客单/低客单--》按照省份、城市进行分组(groupby)--》计算每个城市高/低客单数量(可用合并的方式)--》计算总体的高客单占比--》计算每个城市的高客单占比--》筛选出符合条件的top5高客单城市

3、实现过程 3.1 计算每位买家的客单价

gp_user = data.groupby('买家昵称').mean().reset_index()

gp_user.head()

3.2 分类打标签为高客单/低客单

使用apply函数进行分类打标签

def gaokedan(x):
    if x>=50:
        return '高客单'
    else:
        return '低客单'

gp_user['客单类别']=gp_user['实付金额'].apply(gaokedan)

gp_user.head()

3.3按照省份、城市进行分组(groupby)

分组之前先对表格进行合并

data_dup=data.loc[data.duplicated('买家昵称')==False,:]  #duplicates用于判断是否有重复,这里去除掉会重复的买家昵称,方便后续合并

data_merge=pd.merge(gp_user,data_dup,left_on='买家昵称',right_on='买家昵称',how='left') #需要合并的原因是gp_user中没有省份信息,所以需要连接原数据data

data_merge=data_merge[['买家昵称','客单类别','省份','城市']] #取出需要的数据

3.4计算每个城市高/低客单数量(可用合并的方式)


result=pd.pivot_table(data_merge,index=['省份','城市'],columns='客单类别',aggfunc='count')#再用透视表
result.head()

tgi=pd.merge(result['买家昵称']['高客单'].reset_index(),result['买家昵称']['低客单'].reset_index(),left_on=['省份','城市'],right_on=['省份','城市'])
tgi.head()

3.5 计算总体的高客单占比/每个城市高客单占比/tgi指数计算

tgi.dropna(inplace=True) #某些城市中高客单或低客单人数为null,对分析结果影响不大,删除这些缺失值

tgi['总人数']=tgi['高客单']+tgi['低客单']

tgi['高客单占比']=tgi['高客单']/tgi['总人数']

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

tgi['tgi指数']=tgi['高客单占比']/total_percentage

3.6筛选出需要的数据

tgi.sort_values(by='tgi指数',ascending=False).head()

#发现前几名城市中某几个总人数极少,不符合试销条件,所以尝试筛选出总人数大于平均值的城市,并按tgi指数进行排名

tgi.loc[tgi['总人数']>tgi['总人数'].mean(),:].sort_values(by='tgi指数',ascending=False).head()

参考链接:https://mp.weixin.qq.com/s/eSqOUdj1IBbwZNHHU_LdWA

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。