淘宝电商数据分析-Python

1.明确分析目的
1.1每天的PV
1.2每天的UV
1.3每小时的PV
1.4每小时的UV
1.5用户行为转化率和转化漏斗
1.6销售量前10的商品
1.7销售量前10的商品目录
1.8各种行为的日PV
1.9各种行为的日UV
1.10各种行为的时间段PV
1.11各种行为的时间段UV
2.获取数据,并清洗数据
2.1导入相关的包

# 导入包
# 设置中文显示
import pandas as pd 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'

2.2读取数据,查看数据情况

# 读取数据,制定读取的引擎是python
df = pd.read_csv('taobao_user.csv', engine='python')
# 查看表的情况
# 这里有1048575行,6列数据
df.shape

输出结果:
在这里插入图片描述

# 这里的数据都是比较大,不能直接看出是否有异常值,只能一列列去看下数据的范围
df.describe()

在这里插入图片描述

# 随机抽取10条查看数据的类型
df.sample(10)

输出结果:
在这里插入图片描述

# 这里有8477个用户的行为记录
df['user_id'].unique().size

输出结果:
在这里插入图片描述

# 这里有四种类型1, 2, 3,4
# 1:点击
# 2:收藏
# 3:加入购物车
# 4:支付
df['behavior_type'].unique()

在这里插入图片描述
2.3增加日期辅助列

# 增加日期这个辅助列
# 这里使用匿名函数来将time这一列按照空格进行分割,并获取前面的日期
df['date'] = df['time'].apply(lambda x: x.split(' ')[0])
# 查看日期这列是否正确处理
df.sample(10)

在这里插入图片描述
2.4增加小时这个辅助列

df['hour'] = df['time'].apply(lambda x: int(x.split(" ")[1]))
df.sample(10)

在这里插入图片描述
因为将小时转换成int类型,显示没有了0开头
3.代码实现+可视化+分析
3.1每天的PV

# day_pv
pv_data = df.groupby('date').count()['user_id'].reset_index().rename(columns={
    'user_id': 'user_num'
})
pv_data

在这里插入图片描述
3.2每天的UV

# day_uv
uv_data = df.groupby('date').nunique()['user_id'].reset_index().rename(columns={
    'user_id': 'user_num'
})
uv_data

在这里插入图片描述
3.3每天的PV,UV数据合并,并可视化:

pv_uv_data = pd.merge(pv_data, uv_data, on='date')
pv_uv_data

在这里插入图片描述
可视化:

plt.plot(pv_uv_data['date'], pv_uv_data['user_num_x'], marker='o', label='PV')
plt.xticks(rotation=90)
plt.legend(loc=2)
plt.twinx()
plt.plot(pv_uv_data.date, pv_uv_data.user_num_y, marker='^', label='UV', color='orange')
plt.xticks(rotation=90)
plt.title('12月12PV、UV达到峰值')
plt.legend()

在这里插入图片描述
结论:双12前后,淘宝有大型促销活动,导致日PV,UV达到峰值。
3.4每小时的PV

# 小时的PV,UV分析
hour_pv_data = df.groupby('hour').count()['user_id'].reset_index().rename(columns={
    'user_id': 'hour_pv'
})
hour_pv_data

在这里插入图片描述
3.5每小时的UV

hour_uv_data = df.groupby('hour').nunique()['user_id'].reset_index().rename(columns={
    'user_id': 'hour_uv'
})
hour_uv_data

在这里插入图片描述
3.6每小时PV,UV可视化

plt.plot(hour_pv_data['hour'], hour_pv_data['hour_pv'], marker='o', label='PV')
plt.xticks(rotation=90)
plt.legend(loc=2)
plt.twinx()
plt.plot(hour_uv_data.hour, hour_uv_data.hour_uv, marker='^', label='UV', color='orange')
plt.xticks(rotation=90)
plt.title('各时间段的PU,UV')
plt.legend(loc=9)

在这里插入图片描述
结论:
晚上7-10点是用户活跃的时间段,建议这个时间段多推送一些促销信息(运营方面),增加网络宽度(技术方面),上新产品(产品方面)。
3.7用户行为转化率和转化漏斗

# 用户行为分析
behavior_data = df.behavior_type.value_counts().reset_index()
behavior_data['rate'] = behavior_data['behavior_type'] /len(df)
behavior_data.to_excel('behavior_data.xlsx', index=False)
behavior_data

输出结果:
在这里插入图片描述
可视化用的Excel来做的漏斗图:
在这里插入图片描述
结论:
这里的用户的点击量很大,但是用户的转化率不高。
可下钻的问题:
1.产品方面:
1.a:查看产品的种类,各个产品的行为的转化率
1.b:查看产品的质量,使用评价,好评率等的相关信息来增加或者减少相关产品,从而增加产品的销售量。
1.c:推出爆款产品
1.d:淘宝上同类产品的价格调研,查看是否是产品的价格偏高导致的产品的性价比低
2.运营方面:
2.a:日常的促销、优惠力度是否不够大。
2.b:产品详情页的排版、产品的介绍是否吸引用户
3.技术方面:
3.a:是否是点击跳转到商品详情页的速度
3.b:详情页加载是否慢了

3.8销售量前10的商品

buy_orders = df[df.behavior_type == 4]
# 销售量前10的商品id
buy_orders.item_id.value_counts().sort_values(ascending=False).head(10).plot(kind='bar')
plt.title("销量前10的商品id")

在这里插入图片描述
3.9销售量前10的商品目录

# 销售量前10的商品目录
buy_orders.item_category.value_counts().sort_values(ascending=False).head(10).plot(kind='bar')
plt.title("销售量前10的商品目录")

在这里插入图片描述
3.10各种行为的日PV

# 不同行为的每天的PV,UV
import seaborn as sns
behavior_day_pv = df.groupby(['behavior_type', 'date']).count()['user_id'].reset_index().rename(columns={
    'user_id': 'order_num'
})
palette = sns.color_palette("mako_r", 4)
sns.lineplot(x='date', y='order_num', hue='behavior_type', data=behavior_day_pv, palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述
这里由于1(点击)行为的人数较多,这里去掉1这个行为来观察下数据:

# 不同行为的每天的PV,UV
palette = sns.color_palette("mako_r", 3)
sns.lineplot(x='date', y='order_num', hue='behavior_type', 
             data=behavior_day_pv[behavior_day_pv.behavior_type!=1], 
             palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述
3.11各种行为的日UV

behavior_day_uv = df.groupby(['behavior_type', 'date']).nunique()['user_id'].reset_index().rename(columns={
    'user_id': 'order_num'
})
palette = sns.color_palette("mako_r", 4)
sns.lineplot(x='date', y='order_num', hue='behavior_type', 
             data=behavior_day_uv, 
             palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述
3.12各种行为的时间段PV

# 不同行为的hour分析
behavior_hour_pv = df.groupby(['behavior_type', 'hour']).count()['user_id'].reset_index().rename(columns={
    'user_id': 'order_num'
})
palette = sns.color_palette("mako_r", 4)
sns.lineplot(x='hour', y='order_num', hue='behavior_type', 
             data=behavior_hour_pv, 
             palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述
这里由于1(点击)行为的人数较多,这里去掉1这个行为来观察下数据:

palette = sns.color_palette("mako_r", 3)
sns.lineplot(x='hour', y='order_num', hue='behavior_type', 
             data=behavior_hour_pv[behavior_hour_pv.behavior_type!=1], 
             palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述
3.13各种行为的时间段UV

behavior_hour_uv = df.groupby(['behavior_type', 'hour']).nunique()['user_id'].reset_index().rename(columns={
    'user_id': 'order_num'
})
palette = sns.color_palette("mako_r", 4)
sns.lineplot(x='hour', y='order_num', hue='behavior_type', 
             data=behavior_hour_uv, 
             palette=palette)
plt.xticks(rotation=90)

在这里插入图片描述

4.得出结论
4.1双12前后的PV、UV达到峰值
4.2晚上7-10点是用户的活跃期
4.3点击量很多,转化率只有2.8%,购买率只占了0.9%

  • 8
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值