前言
嗨喽!大家好呀,这里是魔王~
一、项目背景
通过"扫描"零售商店电子销售点个别产品的条形码而获得的消费品销售的详细数据。这些数据提供了有关所售商品的数量、特征和价值以及价格的详细信息。
二、数据来源
<链接>
三、提出问题
- 消费情况分析及用户购买模式分析
- RFM和CLV分析
- 不同类别商品关联规则挖掘
四、理解数据
- Date:购买日期
- Customer_ID:用户ID
- Transaction_ID:交易ID
- SKU_Category:商品分类SKU编码
- SKU:商品唯一SKU编码
- Quantity:购买数量
- Sales_Amount:购买金额
五、数据清洗
1.导入数据
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inline
# 更改设计风格
plt.style.use('ggplot')
plt.rcParams['font.sans-serif'] = ['SimHei']
np.__version__
pd.__version__
df = pd.read_csv('scanner_data.csv')
df.head()
df.info()
2.选择子集
第一列为数据编号,已有索引故删除
df.drop(columns='Unnamed: 0', inplace=True)
df.info()
### 3.删除重复值
```go
df.duplicated().sum()
数据无重复值
### 4.缺失值处理
df.isnull().sum()
数据无缺失值
### 5.标准化处理
df.dtypes
Date为对象类型,需要标准化为日期类型格式
df.Date = pd.to_datetime(df.Date, format='%d/%m/%Y')
df.dtypes
6.异常值处理
df[['Quantity','Sales_Amount']].describe()
购买数量存在小于1是由于称重单位不足1所致,非异常值
六、分析内容
1.消费情况按月分析
(1)每月消费总金额趋势分析
df['Month'] = df.Date.astype('datetime64[M]')
df.head()
grouped_month = df.groupby('Month')
grouped_month.Sales_Amount.sum()
2018年1月数据可能统计不全,不纳入趋势分析
grouped_month.Sales_Amount.sum().head(12).plot()
- 由上图可知:消费金额波动较大,其中第一季度保持持续上升,后续波动较大,整体呈上升趋势
(2)每月交易次数趋势分析
grouped_month.Transaction_ID.nunique().head(12).plot()
- 由上图可知:交易次数波动较大,前期呈上升趋势,五月之后交易次数开始下降,在八月降至最低值,后续开始波动回升,在十二月份重回峰值
(3)每月商品购买数量趋势分析
grouped_month.Quantity.sum().head(12).plot()
- 由上图可知:商品购买数量波动较大,整体趋势同交易次数保持一致
(4)每月消费人数趋势分析
grouped_month.Customer_ID.nunique().head(12).plot()
- 由上图可知:每月购买人数可分简单为三个阶段,1-5月呈持续上升趋势,6—8呈持续下降趋势,9-12月呈波动上升趋势
2.用户分布分析
(1)新用户分布
grouped_customer = df.groupby('Customer_ID')
grouped_customer.Date.min().value_counts().plot()
- 由上图可知:新用户获取不稳定,波动较