从JData_Action_201602.csv中读取数据。使用 Matplotlib 模块实现周一到周日各天购买情况的数据可视化。 相关知识 本关的目的是统计周一到周日各天购买情况,我们需要完成以下几个步骤: 提取购买(type=4)的行为数据; 将time字段转换为 datetime 类型: 可以使用to_datetiem()函数实现类型的转换,该步骤的转换是为了方便下一步转换为星期。 将时间 time 转换为星期(周一为 1 ,周日为 7 ): 该步骤可以使用 Pandas 的apply()函数实现。 统计周一到周日每天购买用户个数; 统计周一到周日每天购买商品个数; 统计周一到周日每天购买记录个数; 三个统计步骤都可以使用分组函数groupby()来实现。 条形宽度设置为 0.2; 透明度设置为 0.4; x轴名设置为weekday; y轴名设置为number; title设置为:A Week Purchase Table; 图片保存路径step2/ans/result.png。
时间: 2023-06-11 12:07:06 浏览: 82
以下是代码实现:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('JData_Action_201602.csv')
# 提取购买行为数据
buy_data = data[data.type == 4]
# 将time字段转换为datetime类型
buy_data['time'] = pd.to_datetime(buy_data['time'])
# 将时间转换为星期
buy_data['weekday'] = buy_data['time'].apply(lambda x: x.weekday() + 1)
# 统计每天购买用户数
user_count = buy_data.groupby('weekday')['user_id'].nunique()
# 统计每天购买商品数
sku_count = buy_data.groupby('weekday')['sku_id'].nunique()
# 统计每天购买记录数
buy_count = buy_data.groupby('weekday')['type'].count()
# 绘制柱状图
fig, ax = plt.subplots()
ax.bar(user_count.index - 0.2, user_count.values, width=0.2, alpha=0.4, label='User Count')
ax.bar(sku_count.index, sku_count.values, width=0.2, alpha=0.4, label='Sku Count')
ax.bar(buy_count.index + 0.2, buy_count.values, width=0.2, alpha=0.4, label='Buy Count')
ax.set_xlabel('weekday')
ax.set_ylabel('number')
ax.set_title('A Week Purchase Table')
ax.legend()
plt.savefig('step2/ans/result.png')
plt.show()
```
执行完毕后,会在当前目录下生成step2/ans/result.png文件,内容为周一到周日各天购买情况的数据可视化。
阅读全文