没有合适的资源?快使用搜索试试~ 我知道了~
淘宝母婴商品分析-Python
5星 · 超过95%的资源 22 下载量 118 浏览量
2020-12-21
10:10:06
上传
评论 12
收藏 728KB PDF 举报
温馨提示
试读
13页
1.项目背景: 今年来母婴的消费逐渐增加,这是一份关于淘宝天猫的一份母婴的销售数据。分析该数据集有利于了解目前市场的销售情况,便于做出运营决策,提高销售额。 数据集来自天池:https://tianchi.aliyun.com/dataset/dataDetail?dataId=45 该数据集有两个表,(sample)sam_tianchi_mum_baby_trade_history.csv包含了: user_id:用户ID auction_id: cat_id:类别ID cat1:跟类别ID property:相关属性(这里的数据比较多,直接忽略,不做分析) buy_mount:购买数量
资源详情
资源评论
资源推荐
淘宝母婴商品分析淘宝母婴商品分析-Python
1.项目背景:
今年来母婴的消费逐渐增加,这是一份关于淘宝天猫的一份母婴的销售数据。分析该数据集有利于了解目前市场的销售情况,便于做出运营决策,提高销
售额。
数据集来自天池:https://tianchi.aliyun.com/dataset/dataDetail?dataId=45
该数据集有两个表,(sample)sam_tianchi_mum_baby_trade_history.csv包含了:
user_id:用户ID
auction_id:
cat_id:类别ID
cat1:跟类别ID
property:相关属性(这里的数据比较多,直接忽略,不做分析)
buy_mount:购买数量
day:购买日期
表(sample)sam_tianchi_mum_baby.csv:
user_id:用户ID
birthday:出生日期
gender:性别 0:女 ,1:男 , 2:未知
2.分析目的:
2.1.销售数量前10的的类别ID
2.2.订单量前10的类别ID
2.3.跟类别的销售数量
2.4.跟类别的订单量
2.5.年的销售数量
2.6.年的订单量
2.7.月的销售数量
2.8.月的订单量
2.9.每年各跟类别的销售数量占比
2.10.每年各各跟类别的订单量占比
2.11.用户性别分布情况
2.12.各性别的销售数量
2.13.各性别的订单量
2.14.各性别销售数量中的跟类别占比
2.15.各性别订单量中的跟类别占比
2.16.各年龄层人数分布
2.17.各年龄层销售数量情况
3.数据清洗
3.1导入包和查看数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
%matplotlib inline
df = pd.read_csv('./(sample)sam_tianchi_mum_baby_trade_history.csv',
engine='python', parse_dates=['day'])
df.shape
3.2查看列的信息
# 这里只有property这列的数据有异常,只有29827条数据,其他的数据都没异常,
# property这列的数据不做处理,这列的数据较分散,难以分析
df.info()
输出:
3.3查看表平均值这些
# 查看数据的计数、平均值、标准差、最小值、最大值、1/4分位数,2/4分位数、3/4分位数
# 这里的buy_mount最大值为1000,是异常数据
df.describe()
输出:
3.4查出重复的user_id
# 查找出重复的数据,并查看数据的详细信息,再决定进一步要怎么清洗数据,
# 数据匹配的上,有27条重复的数据
df[df.duplicated('user_id')].shape
输出:
这里有27条重复的数据,进一步查看这些数据:
# 查看重复数据的ID,进一步将全部的重复数据找出来,对比下,重复数据是由于复购或者数据异常这样
df[df.duplicated('user_id')].user_id
输出:
进一步查看user_id重复的原始数据:
# 查找所有的重复数据,并按user_id排序
# 52条数据52-27
# 25个人重复购买
# 观察每个用户的下单日期day,可以看出这些用户,是重复购买的用户,数据没有异常
df[df.user_id.isin(df[df.duplicated('user_id'
)].user_id)].sort_values(by='user_id',
ascending=True)
输出:
3.5清洗buy_mount列
# 这里最大值是10000,有异常值,标准差是63.98,均值是2.54
# 这里直接将购买数量大于101的数据当做异常值,这些数据有41条,占了0.1%
df.drop(index=df[df.buy_mount>101].index, inplace=True)
4.针对目的进行分析
4.1.销售数量前10的的类别ID
sale_num_top = df.groupby("cat_id").sum()['buy_mount'].sort_values(ascending=False).head(10).reset_index()
# 这里将cat_id转换成str类型,并在前面+个_是为了画图的时候,x轴不是按cat_id大小来排序的,
# 这会导致画的数据标签错位的。
sale_num_top['cat_id'] = sale_num_top['cat_id'].apply(lambda x:'_' + str(x))
# 可视化
import seaborn as sns
plt.figure(figsize=(6,4), dpi=128)
sns.barplot(x='cat_id', y='buy_mount', data=sale_num_top)
plt.xticks(rotation=70)
for a, b in enumerate(sale_num_top.buy_mount):
plt.text(a, b, b, va='center', ha='center', rotation=45)
输出:
2.2.订单量前10的类别ID
order_num_top = df.groupby('cat_id').count()[
'user_id'].reset_index().rename(columns={'user_id':
'order_num'}).sort_values(
by='order_num', ascending=False).head(10)
order_num_top['cat_id'] = order_num_top['cat_id'].apply(lambda x:'_' + str(x))
#可视化
plt.figure(figsize=(6,4), dpi=128)
sns.barplot(x='cat_id', y='order_num', data=order_num_top)
plt.xticks(rotation=70)
for a, b in enumerate(order_num_top.order_num):
plt.text(a, b, b, va='center', ha='center', rotation=45)
输出:
2.3.跟类别的销售数量
cat1_sale_num = df.groupby('cat1').sum()['buy_mount'].reset_index()
cat1_sale_num['cat1'] = cat1_sale_num['cat1'].apply(lambda x:'_' + str(x))
#可视化
plt.figure(figsize=(6,4), dpi=128)
sns.barplot(x='buy_mount', y='cat1', data=cat1_sale_num)
plt.xticks(rotation=70)
for a, b in enumerate(cat1_sale_num.buy_mount):
plt.text(b, a, b, va='center', ha='center')
输出:
剩余12页未读,继续阅读
weixin_38727062
- 粉丝: 4
- 资源: 978
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5