加盟母婴产品 想了解资料 qq留言_加盟母婴产品 想了解资料 qq留言

母婴产品用户消费行为分析

项目背景

得益于中国通信技术发展和基础设施建设取得的巨大进步,我国电商业在近些年发展快速,其中母婴类产品交易规模呈现逐年增长的趋势。对母婴类产品消费用户进行深入分析,可以帮助我们通过把握市场规律,发现潜在问题;通过分析用户价值度,对不同价值的用户进行有针对性的客户管理和维护运营策略母婴货源用品批发-代理一手货源电话:17635836950,母婴交流群:Lj37571(添加微信邀请入群,分享选购经验,交流母婴用品),最终实现成交总额GMV的提升。

数据来源及字段解释 1.数据来源

阿里天池

2.字段解释

商品消费表格字段:

user_id:用户身份信息

auction_id:购买行为编号

cat_id:商品种类序列号

cat:商品序列号

property:商品属性

buy_mount:购买数量

day:购买时间

婴儿信息表格字段:

birthday:出生日期

gender:性别(0 male;1 female)

用户消费数据分析(mysql)

导入数据,进行业务指标分析。

1.统计不同月份的下单人数

 

select DATE_FORMAT(day,"%Y-%m") "月份",count(distinct user_id) "下单人数" 
from tianchi_tradeinfo group by DATE_FORMAT(day,"%Y-%m");

 

2.统计不同月份的回购率和复购率

 

-- 回购率
select DATE_FORMAT(t_now.date,"%Y-%m") month,count(distinct t_now.user_id) "本月购买人数",
count(distinct t_next.user_id) "下月仍购买的人数",
CONCAT(round(count(distinct t_next.user_id)/count(distinct t_now.user_id)*100,2),"%") "回购率" 
from (select *,DATE_FORMAT(day,"%Y-%m-01") date from tianchi_tradeinfo) as t_now left join (select *,DATE_FORMAT(day,"%Y-%m-01") date from tianchi_tradeinfo) as t_next 
on t_now.user_id=t_next.user_id and t_now.date=DATE_SUB(t_next.date,interval 1 month) group by month order by month asc;

 

 

-- 复购率
select t.date "月份",count(distinct t.user_id) "本月购买人数",
count(if(counts>1,1,null)) "本月复购人数",
CONCAT(round(count(if(counts>1,1,null))/count(distinct t.user_id)*100,2),"%") "复购率" 
from (select *,DATE_FORMAT(day,"%Y-%m") date,count(auction_id) counts from tianchi_tradeinfo GROUP BY date,user_id) as t group by t.date;

 

3.统计男女的消费频次是否有差异

 

-- 3.统计男女的消费频次是否有差异
select trade.month "月份",case when baby.gender = 0 then "女" when baby.gender = 1 then "男" end as "性别",
count(distinct trade.user_id) "下单人数",avg(trade.counts) "消费频次" 
from (select *,DATE_FORMAT(day,"%Y-%m") month,count(auction_id) counts from tianchi_tradeinfo group by month,user_id) as trade 
left join 
(select * from tianchi_babyinfo where gender = 0 or gender = 1) baby on trade.user_id=baby.user_id group by trade.month,baby.gender having baby.gender is not null;

 

4.统计多次消费的用户,第一次和最后一次消费时间的间隔

 

select t1.user_id,DATEDIFF(max(t1.date),min(t1.date)) "生命周期/天数" 
from (select *,DATE_FORMAT(day,"%Y-%m-%d") date from tianchi_tradeinfo) as t1 left JOIN 
(select *,count(auction_id) counts from tianchi_tradeinfo group by user_id) as t2 on t1.user_id=t2.user_id where t2.counts>1 and t2.user_id is not null group by t1.user_id; 

 

用户消费行为分析(python)

 

# 导入数据
trade=pd.read_csv("D:python_workspaceCSDN_analysis(sample)sam_tianchi_mum_baby_trade_history.csv")
baby=pd.read_csv("D:python_workspaceCSDN_analysis(sample)sam_tianchi_mum_baby.csv")

 

1.查看数据基本的情况

 

print(trade.info())
print(trade.describe())
print(trade.head())
print("=="*20)
print(baby.info())
print(baby.describe())
print(baby.head())
# 查看数据重复和缺失情况
print(trade.duplicated().sum())
print(trade.isnull().sum()) 

 

2.数据预处理 转换格式

 

# 转换格式
trade["day"]=pd.to_datetime(trade["day"],format="%Y%m%d")
trade["month"]=pd.to_datetime(trade["d"],format="%Y%m")
baby["birthday"]=pd.to_datetime(baby["birthday"],format="%Y%m%d")
baby["gender"]=baby["gender"].replace([0,1,2],["female","male","unkown"])

 

数据合并

 

# 数据合并--左连接
trade2=trade.merge(right=baby,how="left",on="user_id")
print(trade2)  # NaT 为缺失时间
print(trade2[~trade2.isna().any(axis=1)])   # 去掉有缺失值的行

 

3.分析月数据 (1)每月的订单数

 

trade_month=trade.groupby("month")
trade_month_order=trade_month["user_id"].count()
trade_month_order.plot()
plt.show()

 

(2)每月的产品购买量(成交数量)

 

trade_month_amount=trade_month["buy_mount"].sum()
print(trade_month_amount)
trade_month_amount.plot()
plt.show()

 

(3)每月的消费人数(成交用户数)

 

trade_month_user=trade_month["user_id"].apply(lambda x:len(x.drop_duplicates()))
trade_month_user.plot()
plt.show()

 

4.用户画像 (1)用户特征

 

baby["age"]=trade["day"].max().year-baby["birthday"].dt.year
baby_age=baby.groupby("age")["user_id"].count()
print(baby_age)
baby_age.plot()
plt.show()

 

以数据当时最后交易的时间以基准,计算年龄。

 

baby_gender=baby.groupby("gender").count()
baby_gender.user_id.plot(kind="bar")
plt.show()

 

(2)用户生命周期

 

# 生命周期
trade_life=trade.groupby("user_id").day.agg(["max","min"])
trade_life["life"]=(trade_life["max"]-trade_life["min"])/np.timedelta64(1,"D")
print("生命周期")
print(trade_life)
print("总体分类")
trade_life=trade_life.reset_index(drop=False)
trade_life.groupby("life").user_id.count().plot(kind="bar")
plt.show()

 

(3)首购时间和最后一次消费时间

 

trade_user=trade.groupby("user_id")
print(trade.groupby("user_id").day.agg(["max","min"]))
trade_time=trade.groupby("user_id").day.agg(["max","min"])
trade_time.rename(columns={"min":"首购时间","max":"最后一次消费时间"},inplace=True)
print("trade_time:
",trade_time.head())
print(trade_time["首购时间"].value_counts())
trade_time["首购时间"].value_counts().plot()
plt.show()
print(trade_time["最后一次消费时间"].value_counts())
trade_time["最后一次消费时间"].value_counts().plot()
plt.show()

 

在这里插入图片描述

因为顾客大多数是一次性行为,所以首购时间图和最后一次消费时间图基本一致。

总结及建议

1.用户的订单数总体上呈现上升趋势(u4fe1u606fu53d1u5e03-u7f51u7edcu6574u7406-B2Bu63a8u5e7fu670du52a1u2b55u26ab),每年的波动也是基本类似的。每年的5月和11月是消费高峰期,其中11月销量增长最为明显,说明阿里双11策略非常成功,给此商家在11月带来了巨量的用户增长。对于商家而言,一方面注意加大双11的营销宣传力度,另一方面,也得注重备货,以满足用户的需求。

2.用户对象性别特征区分不明显,可按1:1的比例来划分。

3.用户消费的年龄群主要为1-4岁,在营销时应主打产品对于1-4岁儿童的益处,吸引用户。

4.用户多为一次性消费者,忠诚度低,商家应该注重产品质量、售后服务以及营销活动效果的提升。