淘宝母婴购物数据可视化分析

一、项目背景

母婴用品是淘宝的热门购物类目,随着国家鼓励二胎、三胎政策的推进,会进一步促进了母婴类目商品的销量。与此年轻一代父母的育儿观念也发生了较大的变化,因此中国母婴电商市场发展形态也越来越多样化。随之引起各大母婴品牌更加激烈的争夺,越来越多的母婴品牌管窥到行业潜在的商机,纷纷加入母婴电商,行业竞争越来越激烈。本项目会基于“淘宝母婴购物”数据集进行可视化分析,帮助开发者更好地做出数据洞察。


二、项目目标

  • 流量分析:年/季度/月/日的商品销量如何?有什么规律
  • 类别分析:商品销量按照类目分类有什么规律?哪些类目的商品更有价值?
  • 复购率分析:全部母婴商品的当月复购率变化趋势,大类商品复购率趋势

 

三 、项目完成过程

(一)、数据预处理

1、导入数据

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
df = pd.read_csv("(sample)sam_tianchi_mum_baby_trade_history.csv")

 原数据集中有29971条数据,数据集字段如下

商品交易信息表
字段 字段说明
user_id 用户标识
auction_id 交易ID
cat1 商品一级类目ID
cat_id 商品二级类目ID
buy_amount 购买数量
day 订单发生日期

2、查看单个订单购买量分布

# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 确保buy_mount字段是数值类型
df['buy_mount'] = pd.to_numeric(df['buy_mount'], errors='coerce')

# 删除buy_mount为NaN的行
df = df.dropna(subset=['buy_mount'])
# 计算购买量的分布
buy_mount_distribution = df['buy_mount'].value_counts()
# 创建散点图显示购买量分布
plt.figure(figsize=(10, 6))
sns.scatterplot(x = buy_mount_distribution.index, y = buy_mount_distribution)
plt.xlabel('购买量')
plt.ylabel('订单数量')
plt.title('单个订单购买量分布')
plt.show()

 

一件订单购买量大多在[1,2000] 这个区间

3、保留buy_amount[1,195]以内的订单

# 保留buy_amount[1,195]以内的订单
df = df[(df['buy_mount'] >= 1) & (df['buy_mount'] <= 195)]

4、查看有无缺失值异常值 

df.isnull().any()

 数据集中的property全是数字,需要有对应的字典才能知道对应什么属性,在后续需要删除,所以这个字段的缺失值先不处理

5、查看各字段有多少个值

count_user = df.user_id.nunique()
count_auction = df.auction_id.nunique()
count_category_1 = df.cat1.nunique()
count_category_2 = df.cat_id.nunique()
count_buy_mount = df.buy_mount.sum()
print("用户数", count_user)
print("交易数", count_auction)
print("商品一级类目数:", count_category_1)
print("商品二级类目数:", count_category_2)
print("总销量:", count_buy_mount)

5、 trade中的auction_id未指定是什么属性,我们就将他默认改为item_id

df.rename(columns={"auction_id": "item_id"}, inplace=True)

6、property全是数字,需要有对应的字典才能知道对应什么属性,这边先删除 

# 删除property列
df.drop("property", axis=1, inplace=True)

 

7、day改成日期形式并为表增加对应的字段,年、季、月便于后续分析

df["day"] = pd.to_datetime(df.loc[:,"day"], format="%Y%m%d")
df['year'] = df["day"].dt.year
df['quarter'] =df["day"].dt.quarter
df['month'] = df["day"].dt.month

 

(二)、流量分析

1、年销量趋势

# 根据年月查看销量趋势
year_stats = df.groupby(by='year')['buy_mount'].sum()
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

plt.figure(figsize
### 数据准备 对于淘宝母婴购物性别数据的可视化分析,首先需要确保所使用的数据集中包含有关性别的信息。根据已有资料,在“淘宝母婴购物行为”数据集中存在一张名为`tianchi_mum_baby.csv`的数据表[^1]。 假设该表格内含有用户ID、婴儿出生日期以及婴儿性别等字段,则可以利用这些信息来进行更深入的研究。为了便于处理和展示,建议先加载此CSV文件到Python环境中,并通过Pandas库读取成DataFrame对象以便后续操作: ```python import pandas as pd # 加载数据集 data = pd.read_csv('path/to/tianchi_mum_baby.csv') ``` ### 性别分布统计 接下来计算不同性别人群的数量比例情况,这有助于理解目标群体构成特点。可以通过简单的分组聚合函数来完成这项工作: ```python gender_distribution = data.groupby(['baby_gender']).size().reset_index(name='counts') print(gender_distribution) ``` 上述代码会输出每个性别对应的记录数,从而反映出男性宝宝与女性宝宝的比例关系。 ### 可视化呈现 为了让结果更加直观易懂,可以选择柱状图或饼图的形式展现出来。这里采用Matplotlib绘制一个简单而清晰的图表表示男女婴数量对比: ```python import matplotlib.pyplot as plt plt.bar(gender_distribution['baby_gender'], gender_distribution['counts']) plt.xlabel('Baby Gender') plt.ylabel('Number of Babies') plt.title('Distribution by Baby Genders') plt.show() ``` 如果希望以百分比形式显示占比,也可以考虑使用Seaborn库中的countplot功能快速生成带有标签说明的条形图;或者是pie()方法制作圆形分割图来强调各部分之间的相对大小差异。 ### 进一步探索 除了基本的人口统计数据外,还可以尝试结合其他变量一起考察是否存在某些模式关联,比如按月份查看特定时间段内的销售量变化趋势是否受到季节因素影响较大?亦或是探究消费者偏好如何因地域位置的不同而有所区别?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值