目录

  • 一、TGI指数分析案例
  • 二、连锁超市统计分析案例

一、TGI指数分析案例

什么是 TGI?
TGI:即 Target Group Index(目标群体指数),可反映目标群体在特定
研究范围(如地理区域、人口统计领域、媒体受众、产品消费者)内的强势或弱势。

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

例如
将某地区 15-24 岁的人作为目标群体,将去[电影网站 A]看电影作为相同特征;
若该地区 15-24 岁的人中,有 8.9%的人去过[电影网站 A]看电影,而在该地区总体人群中,
有6.6%的人去过[电影网站 A]看电影,则[电影网站 A]在 15-24岁人群中的TGI指数是134.9
(8.9%/6.6%×100),其数额越大,就表明目标群体吻合度就越强势。

水平线
TGI 指数表征不同特征用户关注问题的差异情况,其中 TGI 指数等于 100 表示平均水平
高于 100,代表该类用户对某类问题的关注程度高于整体水平。

以下为某品牌的交易订单数据,针对该数据进行 TGI 分析。

针对数据,可以整理出来不同的统计数据:

 (1)单个用户平均支付金额 (2)基于用户支付金额,判断用户是属于低客单还是高客单 (3)用透视表的方法来统计每个省市低客单、高客单人数(4)计算总人数,以及每个城市对应的高客单占比 (5)计算全国总体高客单人数占比 (6)计算每个城市高客单 TGI 指数

代码实现:

# TGI指数:Target Group Index(目标群体指数)可反映目标群体在特定 研究范围(如地理区域、人口统计领域、媒体受众、产品消费者)内的强势或弱势。
# TGI 指数= [目标群体中具有某一特征的群体所占比例/总体中具有相同特征的群体所占 比例]*标准数 100。
# 用来查看该地区不同目标群体对于某问题的关心程度# 只要牵扯到具体的业务---会有多个观点---合理的解释--思考方向import pandas as pd# 加载数据
data = pd.read_excel('./TGI指数案例数据.xlsx')
print('data:\n', data)
print('data的列索引:\n', data.columns)# (1)单个用户平均支付金额
# 保证:该订单真实存在,且已交易成功
# 不知道存在多少种 订单状态? --查看各个订单状态的数量
print(data['订单状态'].value_counts())
# 交易成功                 27792
# 付款以后用户退款成功,交易自动关闭     1040"""删除法"""
# # 删除 付款以后用户退款成功,交易自动关闭 这种订单
# # a、确定要删除的订单 行名称
# bool_mask = data.loc[:, '订单状态'] == '付款以后用户退款成功,交易自动关闭'
#
# # b、确定退款订单的 行名称
# index = data.loc[bool_mask, :].index
#
# # c、删除
# data.drop(labels=index, axis=0, inplace=True)"""保留法"""
# 保留 交易成功 的订单
# a、确定哪些数据是交易成功的
bool_mask = data.loc[:, '订单状态'] == '交易成功'
# b、选中True的
data = data.loc[bool_mask, :]print('剔除交易失败的数据之后的结果为:\n', data.shape)
print('*' * 100)# # # 按照 买家昵称 进行分组 ---> 实付金额
# # 给数据修改 新的行索引你 ----reset_index()
print(data.groupby(by='买家昵称')['实付金额'].mean().reset_index())# (2) 基于用户支付金额,判断该订单 是属于低客单还是高客单
#  针对于每个订单来说的:  ---每次买的东西不一样---决定了订单类别不一样
#  低客单---实付金额较少的
#  高客单---实付金额较多的# # 均值
# mean = data.loc[:,'实付金额'].mean()
# print('mean:\n',mean)
#
# # 中位数
# median = data.loc[:,'实付金额'].median()
# print('median:\n',median)# 用 50 作为判定条件
# 每个订单-- 如果 > 50 ---  高客单
# 每个订单-- 如果 < 50 ---  低客单# # 占位
# data.loc[:, '客户类别'] = '高客户'
#
# # bool数组进行判断
# # 确定哪些订单的 实付金额 > 50 --->设置为 高客单
# # 确定哪些订单的 实付金额 < 50 --->设置为 低客单
# bool_mask_1 = data.loc[:, '实付金额'] >= 50
# bool_mask_2 = data.loc[:, '实付金额'] < 50
# # 修改
# data.loc[bool_mask_1, '客户类别'] = '高客户'
# data.loc[bool_mask_2, '客户类别'] = '低客户'
#
# print('data:\n',data)# 自定义函数
def if_high(element):if element >= 50:return '高客户'else:return '低客户'data.loc[:, '客户类别'] = data.loc[:, '实付金额'].transform(if_high)
print('data:\n', data)# (3)用透视表的方法来统计每个省市低客单、高客单 单数
res = pd.pivot_table(data=data,index=['省份', '城市'],columns='客户类别',values='买家昵称',  # 关心的主体,买家昵称出现的次数aggfunc='count')
print('res:\n', res)
print('*' * 100)# (4)计算该城市总单数,以及每个城市对应的高客单占比
# 将结果转化为熟悉的df
df = res.reset_index()
print('df:\n', df)# 计算总单量 ---对应城市
# 总单量 = 低客单 + 高客单
df['all'] = df['低客户'] + df['高客户']# 占比 ---各个城市的高客单 占该城市 总的单数的 占比
df['percent_gao'] = df['高客户'] / df['all']
print(df)
print('*' * 100)# (5)计算全国总体高客单占比
# 高客单 总数 / 总单量# 计算
percent_all = df['高客户'].sum() / df['all'].sum()print('全国高客单占比为:', percent_all)# 存在NaN --->相乘-->结果为NaN# (6) 计算每个城市高客单 TGI 指数
# TGI指数 --->该城市高客单的占比 / 全国高客单的占比 * 标准数 100
# df['TGI_city'] = df['percent_gao'] / percent_all * 100
# print('df:\n', df)
# print('*' * 100)
# 哪个城市高客单的TGI指数高---> 该城市进行加大运营力度
# 对TGI指数进行排序 --降序
# df --->按照某列值进行排序
# sort_values 对df进行排序--默认升序排序的--ascending=True
# ascending=False --->降序
# 返回新的排序之后的df
# df指定按照某列进行排序的时候,其他的属性数据会随着该列值的上下移动而移动
# df = df.sort_values(by='TGI_city', ascending=False)
# print('df:\n', df.head(10)[['省份', '城市']])# 会存在这样问题 可能:下单量太少、而且基本上全是 高客单----》TGI指数会非常大
# 找出TGI指数较高的城市---筛选单量
# a、总单量的平均值 --->获取哪些数据
# > 总单量的平均值 ----提高要求-->高客单的平均值
bool_mask = df['all'] > df['高客户'].mean()
# 再去筛选
df = df.loc[bool_mask, :]df['TGI_city'] = df['percent_gao'] / percent_all * 100
print('df:\n', df)
print('*' * 100)df = df.sort_values(by='TGI_city', ascending=False)
print('df高客户占比率较多的城市:\n', df.head(10)[['省份', '城市']])

二、连锁超市统计分析案例

近些年来,国内大型连锁超市如雨后春笋般迸发,对于各个超市来说,竞争压力不可谓
不大,为了拓展、保留客户,各种促销手段应运而生。

以下为国内某连锁超市的成交统计数
据,针对于该数据,挖掘其中价值,为该超市的促销手段提供技术支持。


针对于该超市数据,可以提出问题:

 (1)哪些类别的商品比较畅销?(2)哪些商品比较畅销? (3)求不同门店的销售额占比 (4)哪段时间段是超市的客流高峰期?

代码实现:

import pandas as pd# 加载数据
order = pd.read_csv('./order.csv', encoding='ansi')
print('order:\n', order)
print('order的列索引:\n', order.columns)
print('*' * 100)# 因为 销量必须 > 0,才认为卖出商品 ,销量 <0 --->异常的 ---干掉
# 销量 = 0 没有卖出商品---销量的研究无意义 ---干掉
# 删除掉 销量 <= 0 的数据
# a、判断哪些数据的销量 <= 0
bool_mask = order['销量'] <= 0
# b、确定要删除的数据的行名称
index = order.loc[bool_mask, :].index
# c、删除
order.drop(labels=index, axis=0, inplace=True)print('删除销量异常的数据之后的结果为:\n', order.shape)# (1) 哪些类别的商品比较畅销?
# 计算各类商品 销量 ---排序
# res = order.groupby(by='类别ID')['销量'].sum().reset_index().sort_values(by='销量', ascending=False)['类别ID'].head(10)
# print('res:\n', res)# 透视表
res1 = pd.pivot_table(data=order,index='类别ID',values='销量',aggfunc='sum').reset_index().sort_values(by='销量', ascending=False)['类别ID'].head(10)print('畅销商品的类别ID:\n', res1)# (2)哪些商品比较畅销?---具体的商品
# res = order.groupby(by='商品ID')['销量'].sum().reset_index().sort_values(by='销量', ascending=False)['商品ID'].head(10)
# print('res:\n', res)# 透视表
res2 = pd.pivot_table(data=order,index='商品ID',values='销量',aggfunc='sum').reset_index().sort_values(by='销量', ascending=False)['商品ID'].head(10)print('畅销商品的ID:\n', res2)# (3)求不同门店的销售额占比
# 单价 * 销量 ---> 商品具体的销售额
# 按照 门店编号进行分组 ---统计 商品具体的销售额 之和
# 各个门店销售额 / 各个门店销售额之和 ---各个门店的销售额占比
# a、具体商品的销售额 --列
# order.loc[:, '销售额'] = order.loc[:, '单价'] * order.loc[:, '销量']
# print('不同门店的销售额占比:\n', order)
# print('*' * 100)# # b、按照门店编号进行分组 ---统计销售额之和
res3 = order.groupby(by='门店编号')['销售额'].sum()
print("不同门店的销售额占比\n",res3)# # 透视表
#
# # c、占比
res_percent = res3 / res3.sum()
#
print('各个门店的占比为:\n', res_percent.apply(lambda x: format(x, '.2%')))# (4) 哪段时间段是超市的客流高峰期?
#  给定的数据 ---一天内的 --- 时间划分  ---每个小时--认为是一个时间段# 评价客流???--订单数量# 查看 订单ID 这一列
# 假设---一个订单---对应一个人
# 统计的是各个时间段内 不同的订单id出现的次数 ----越多,认为客流量越大# a、时间属性
order.loc[:, '成交时间'] = pd.to_datetime(order.loc[:, '成交时间'])
# 列表推导式
order['hour'] = [i.hour for i in order.loc[:, '成交时间']]# b、获取不同的订单
# 去重
# ndarray里面---unique-去重
# df去重 ---drop_duplocates --进行去重
# subset 去重的列
# inplace= True --对原df产生影响
# keep='first' --默认保留第一次出现的数据
order.drop_duplicates(subset='订单ID', inplace=True)print('按照订单id进行去重之后的结果为:\n', order)# 按照 hour 分组,统计 订单ID 在各个小时内出现的次数
res = order.groupby(by='hour')['订单ID'].count().sort_values(ascending=False)
print('客流高峰期排序:\n', res)# 早上8 9 10  ---晚上5 6 7 --客流高峰期

数据大清洗_Pandas库进阶(TGI指数分析案例)(统计分析案例)相关推荐

  1. 5. TGI指数分析实战

    引言 经常有一些专业的数据分析报告,会提到TGI指数,例如"基于某某TGI指数,我们发现某类用户更偏好XX".对于不熟悉TGI定义的同学,看到类似的话一定是云山雾罩.这次,我们就来 ...

  2. 数据分析必知必会 | TGI指数分析实战

    本篇文章带大家学习一个数据分析实战的案例,详细解读TGI指数,并用Python代码实现基础的TGI偏好分析. 经常有一些专业的数据分析报告,会提到TGI指数,例如"基于某某TGI指数,我们发 ...

  3. python pyecharts 折线图_python数据大屏pyecharts库2020.8.31

    数据大屏V0.1-2020.8.31 前言 千辛万苦,找到了python能实现数据大屏库pyecharts. 1.https://gallery.pyecharts.org/#/Page/page_s ...

  4. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】

    Vue常用的组件库大全[前端工程师必备] (一)移动端 常用组件库 1)Vant ui 2)Cube UI 3)VUX 4) NuTUI 5)Mint ui 6)Varlet UI 7)OnsenUI ...

  5. 一文详解数据分析的 TGI 指数 | 技术头条

    作者 | 周志鹏 责编 | 刘静 这是Python数据分析实战的第一个案例,详细解读TGI指数,并用Python代码实现基础的TGI偏好分析. 经常有一些专业的数据分析报告,会提到TGI指数,例如&q ...

  6. python数据分析怎么样_Python数据分析必知必会:TGI指数

    这是Python数据分析实战的第一个案例,详细解读TGI指数,并用Python代码实现基础的TGI偏好分析. 经常有一些专业的数据分析报告,会提到TGI指数,例如"基于某某TGI指数,我们发 ...

  7. Python数据分析必知必会——TGI指数

    点击阅读原文,查看精彩日程! 作者 | 吹牛Z 来源 | 数据不吹牛(ID: shujubuchuiniu) 这是Python数据分析实战的第一个案例,详细解读TGI指数,并用Python代码实现基础 ...

  8. 可视化搭建数据大屏系统的前端实现

    随着公司业务的发展,经常会收到一些数据大屏的需求.目前我司有两种实现方案,一是人肉搭建,二是用阿里云 DataV 搭建. 人肉搭建,在本地脚手架开发环境中进行编码,有大量的重复劳动,能力复用性差,占用 ...

  9. Vue实现数据大屏组件轮播效果

    Vue实现数据大屏组件轮播效果 需求 分析 实现 备注 需求  采用Vue结合Echarts制作了数据大屏,由于每个组件占用的空间较小,展示起来不够清晰,所以需要在展示大屏之后,每隔一段时间,就对各组 ...

最新文章

  1. 又做出行系统又组建车队,雷诺-日产、Transdev的三方联盟要发大招了
  2. 【django轻量级框架】Django框架介绍与安装
  3. undefined reference to `sqrt‘ 问题
  4. mysql 免安装版迁移_mysql免安装版 安装配置 (转)
  5. 飞鸽传书2010绿色版
  6. 1. 性能测试学习指南
  7. 535. TinyURL 的加密与解密
  8. Mac OS X: launchd plist在线编辑器
  9. 曼孚科技:7种常用的数据标注工具
  10. ESP8266教程4 — ESP8266 智能配网
  11. 【方法分享】准大学生如何自学C语言?
  12. python xlsxwriter dict_使用python库xlsxwriter库来输出各种xlsx文件的示例
  13. 建筑工程师的转行学计算机科学与技术的抉择
  14. 【UVM基础】3、核心基类和机制
  15. 15个顶级Python库,你必须要试试!
  16. MyBatis-plus执行自定义SQL
  17. ubuntu 20.04 安装录屏软件 OBS 及卸载
  18. 黑果安装步骤(手把手教你如何安装黑苹果)
  19. POI导出EXCEL自定义背景颜色
  20. R语言中的函数5:purrrmap()

热门文章

  1. 防火墙之SNAT和DNAT
  2. 【STM32】谈谈STM32F10XX的定时器通道复用功能重映射
  3. 《 海角七号 》——近乎完美的爱情传奇
  4. 有关苹果证书介绍(Certificates, Identifiers Profiles)
  5. 任意进制之间的转换(C++实现)
  6. 【Python】 面向对象:输出年龄最大的对象所对应的名字
  7. Python 删除只读文件/文件夹【报错】
  8. Linux的shell脚本爬虫实战之图片爬取
  9. 有没有会的指点一下啊
  10. android基础面试题及答案,万字Android技术类校招面试题汇总