jupyter notebook绘制产品的购买量与消费金额的散点图 进行用户分组取出消费金额,进行求和,排序,重置索引,每个用户消费金额累加 cumsum函数,消费金额总值 #前xx名用户的总贡献率,用户分组,取最小值 即为首购时间,最后一次购买时间,构建rfm模型并且对用户进行分层,客户分层可视化,新老,活跃,回流用户分析,用Nan替换unreg,用plot.area()绘制面积图(折线图),根据面积图做出你的分析,回流用户的占比绘图,回流用户分析,
时间: 2024-03-27 20:35:57 浏览: 12
好的,我可以为你提供一些代码示例和解释,以帮助你实现这些任务。需要注意的是,由于你并没有提供具体的数据集,下面的代码示例仅供参考。
## 绘制产品的购买量与消费金额的散点图
```python
import matplotlib.pyplot as plt
import pandas as pd
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 绘制散点图
plt.scatter(df['product_sales'], df['product_price'])
plt.xlabel('Product sales')
plt.ylabel('Product price')
plt.title('Product sales vs. price')
plt.show()
```
## 进行用户分组取出消费金额,进行求和,排序,重置索引,每个用户消费金额累加 cumsum函数,消费金额总值前xx名用户的总贡献率
```python
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 按用户进行分组,求出每个用户的消费金额
grouped = df.groupby('user_id')['product_price'].sum()
# 按消费金额排序,并重置索引
sorted_grouped = grouped.sort_values(ascending=False).reset_index()
# 计算每个用户的消费金额累加值
sorted_grouped['cumsum'] = sorted_grouped['product_price'].cumsum()
# 计算前n名用户的总贡献率
n = 100
total_sales = sorted_grouped['product_price'].sum()
top_n_sales = sorted_grouped.head(n)['product_price'].sum()
contribution_rate = top_n_sales / total_sales
# 打印结果
print('前%d名用户的消费金额总值占比为%.2f%%' % (n, contribution_rate * 100))
```
## 用户分组,取最小值即为首购时间,最后一次购买时间,构建rfm模型并且对用户进行分层,客户分层可视化,新老,活跃,回流用户分析
```python
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 计算每个用户的RFM值
rfm = df.groupby('user_id').agg({
'order_date': lambda x: (df['order_date'].max() - x.max()).days, # R值
'order_id': 'count', # F值
'product_price': 'sum' # M值
})
rfm.columns = ['recency', 'frequency', 'monetary']
# 对RFM值进行分组
rfm['r_score'] = pd.qcut(rfm['recency'], 5, labels=range(5, 0, -1))
rfm['f_score'] = pd.qcut(rfm['frequency'], 5, labels=range(1, 6))
rfm['m_score'] = pd.qcut(rfm['monetary'], 5, labels=range(1, 6))
# 计算每个用户的RFM总分
rfm['rfm_score'] = rfm['r_score'].astype('int') * 100 + rfm['f_score'].astype('int') * 10 + rfm['m_score'].astype('int')
# 将用户分为新老、活跃和回流用户
rfm['user_type'] = 'New'
rfm.loc[(rfm['recency'] <= 30) & (rfm['frequency'] >= 2), 'user_type'] = 'Active'
rfm.loc[(rfm['recency'] > 30) & (rfm['recency'] <= 90), 'user_type'] = 'Return'
# 绘制客户分层可视化图表
plt.figure(figsize=(10, 6))
plt.scatter(rfm['frequency'], rfm['monetary'], c=rfm['rfm_score'], s=50)
plt.xlabel('Frequency')
plt.ylabel('Monetary')
plt.title('Customer Segmentation')
plt.colorbar()
plt.show()
```
## 用Nan替换unreg
```python
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 将'unreg'替换为Nan
df = df.replace('unreg', np.nan)
```
## 用plot.area()绘制面积图(折线图),根据面积图做出你的分析,回流用户的占比绘图,回流用户分析
```python
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 将订单日期转换为时间戳,并将其作为索引
df['order_date'] = pd.to_datetime(df['order_date'])
df.set_index('order_date', inplace=True)
# 按月份统计销售额
monthly_sales = df['product_price'].resample('M').sum()
# 绘制面积图
plt.figure(figsize=(12, 6))
plt.fill_between(monthly_sales.index, monthly_sales, color='blue', alpha=0.2)
plt.plot(monthly_sales.index, monthly_sales, color='blue', alpha=0.6)
plt.xlabel('Month')
plt.ylabel('Sales')
plt.title('Monthly Sales')
plt.show()
# 绘制回流用户占比图
rfm['user_type'].value_counts(normalize=True).plot(kind='pie', autopct='%1.1f%%')
plt.title('Return User Proportion')
plt.show()
```
根据面积图,你可以发现某些月份的销售额呈现出明显的上升或下降趋势,这可能与节假日、促销活动等因素有关。根据回流用户占比图,你可以发现回流用户占总客户的比例较高,这可能意味着你需要采取更多的措施来挽留这些用户并提高他们的忠诚度。