Python中如何按周分组绘制value_dummy对应的分组柱状图?
实现方案
你可以按照如下步骤完成按周分组的柱状图绘制:
- 先将日期列转为datetime格式,按照你指定的区间标注对应的周标签
- 分组统计每周内
value_dummy各取值的出现次数 - 直接调用pandas的plot接口生成分组柱状图
完整可运行代码
import pandas as pd import matplotlib.pyplot as plt # 原始数据 data = {'date': ["2021-05-03", "2021-05-04", "2021-05-11", "2021-05-19", "2021-05-19"], 'id_customer': ["5", "7", "8", "5", "3"], 'value_dummy': [1, 0, 1, 1,0]} df = pd.DataFrame.from_dict(data) # 1. 转换日期格式,添加周分组标签 df['date'] = pd.to_datetime(df['date']) df['week'] = pd.cut( df['date'], # 分箱边界覆盖所有日期范围 bins=[pd.to_datetime('2021-05-02'), pd.to_datetime('2021-05-09'), pd.to_datetime('2021-05-16'), pd.to_datetime('2021-05-23')], labels=['第1周', '第2周', '第3周'] ) # 2. 统计每周各value_dummy取值的计数,缺失值补0 week_count = df.groupby(['week', 'value_dummy'])['value_dummy'].count().unstack(fill_value=0) # 3. 绘制分组柱状图 week_count.plot(kind='bar', figsize=(7, 4)) # 优化图表显示效果 plt.xlabel('周数') plt.ylabel('出现次数') plt.xticks(rotation=0) # 保持x轴标签水平显示 plt.legend(title='value_dummy取值') plt.show()
效果说明
运行代码后会生成你需要的分组柱状图,横轴为三个周,每周对应两根柱子分别表示value_dummy取值为0和1的计数,和你给出的示例效果一致。
内容的提问来源于stack exchange,提问作者vojtam
相关产品推荐
相关产品推荐

