TGI指数分析

import pandas as pd
import numpy as np

data = pd.read_excel(r'C:\Users\ibm\Downloads\TGI指数案例数据.xlsx')

print(data.shape)

#2. 获取交易成功的数据量:
mask = data['订单状态']=='交易成功'
successful_deal_df = data.loc[mask, :]


"""
1. 计算用户平均支付金额:
2. 基于用户支付金额,判断用户是属于低客单还是高客单:
  (客户总消费金额 cost, cost>55:高客单, cost<55:低客单)
3. 用透视表的方法来统计每个省市低客单、高客单人数
4. 计算总人数,以及每个城市对应的高客单占比;
5. 思考分析结果是否合理?
"""

#==1. 计算用户平均支付金额===============================================================

#(1).一个客户下了2个订单: 两个人;
#(2) 一个客户下多个订单,算一个人;


#(1)人数:
people_num = successful_deal_df['买家昵称'].drop_duplicates().size
print(successful_deal_df.dtypes)
#(2)平均消费金额:
average_payment = successful_deal_df['实付金额'].sum() / people_num
print(average_payment)
#========================================================================================
# 2. 基于用户支付金额,判断用户是属于低客单还是高客单:
#   (客户总消费金额 cost, cost>55:高客单, cost<55:低客单)

groubpy_maijia = successful_deal_df.groupby(by='买家昵称')['实付金额'].sum().reset_index()

#(1)方法一:bool 切片赋值:
# mask1 = groubpy_maijia['实付金额']<55
# mask2 = groubpy_maijia['实付金额']>=55
# groubpy_maijia.loc[mask1, "买家状态"] =  '低客单'
# groubpy_maijia.loc[mask2, "买家状态"] =  '高客单'
# print(groubpy_maijia)

#(2)方法二: transform + 自定义函数
groubpy_maijia['客户分类'] = groubpy_maijia['实付金额'].transform(lambda x: '低客单' if x < 55 else '高客单')

#==================================================================================================================
# 3. 用透视表的方法来统计每个省市低客单、高客单人数

#(1)将客户分类表添加省与市:
# print(groubpy_maijia.shape)
right = successful_deal_df.drop_duplicates(subset='买家昵称')
concat_df = pd.merge(groubpy_maijia, right=right, on='买家昵称', how='left')

#(2)透视表:
pivot_df = pd.pivot_table(concat_df, index=['省份', '城市'], columns='客户分类', values=['买家昵称'], aggfunc=np.size,margins=True)
print(pivot_df)
#===================================================================================================

# 4. 计算总人数,以及每个城市对应的高客单占比;
# 高客单占比 = 高客单数/单个城市总客单数
# print((pivot_df['买家昵称']['高客单'] / pivot_df['买家昵称']['All']).sort_values(ascending=False).head(10))


#5. 思考分析结果是否合理?(不合理,原因部分地区的客流量很少,数据不具有代表性)
# 选择条件进行筛选:

# (1)各地高客单/ 全国总高客单数
# print(pivot_df.head())
gaokedan_num = pivot_df.loc['All', ('买家昵称', '高客单')].values[0]
print(((pivot_df['买家昵称']['高客单']) / gaokedan_num).sort_values(ascending=False))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值