淘宝电商数据分析-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

输出结果:
淘宝电商数据分析-Python_第1张图片

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

淘宝电商数据分析-Python_第2张图片

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

输出结果:
淘宝电商数据分析-Python_第3张图片

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

输出结果:
淘宝电商数据分析-Python_第4张图片

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

淘宝电商数据分析-Python_第5张图片
2.3增加日期辅助列

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

淘宝电商数据分析-Python_第6张图片
2.4增加小时这个辅助列

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

淘宝电商数据分析-Python_第7张图片
因为将小时转换成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

淘宝电商数据分析-Python_第8张图片
3.2每天的UV

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

淘宝电商数据分析-Python_第9张图片
3.3每天的PV,UV数据合并,并可视化:

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

淘宝电商数据分析-Python_第10张图片
可视化:

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()

淘宝电商数据分析-Python_第11张图片
结论:双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

淘宝电商数据分析-Python_第12张图片
3.5每小时的UV

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

淘宝电商数据分析-Python_第13张图片
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)

淘宝电商数据分析-Python_第14张图片
结论:
晚上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

输出结果:
淘宝电商数据分析-Python_第15张图片
可视化用的Excel来做的漏斗图:
淘宝电商数据分析-Python_第16张图片
结论:
这里的用户的点击量很大,但是用户的转化率不高。
可下钻的问题:
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")

淘宝电商数据分析-Python_第17张图片
3.9销售量前10的商品目录

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

淘宝电商数据分析-Python_第18张图片
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)

淘宝电商数据分析-Python_第19张图片
这里由于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)

淘宝电商数据分析-Python_第20张图片
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)

淘宝电商数据分析-Python_第21张图片
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)

淘宝电商数据分析-Python_第22张图片
这里由于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)

淘宝电商数据分析-Python_第23张图片
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)

淘宝电商数据分析-Python_第24张图片

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

你可能感兴趣的:(淘宝电商数据分析-Python)