You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤Pandas DataFrame列并按星期生成小时到访量直方图

实现按星期维度生成小时到访人数直方图

没问题!我来帮你一步步实现这个需求——按星期拆分数据,生成七个直方图,分别展示一周中每天各小时的到访人数。下面是具体的实现方法,我会覆盖数据预处理、分组过滤和绘图的全流程:

1. 准备数据与预处理

首先确保你的DataFrame包含时间戳(或可提取时间的字段)、到访人数列。如果没有现成的星期和小时字段,我们可以从时间戳中提取:

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据(替换成你自己的DataFrame即可)
data = {
    'timestamp': pd.date_range(start='2024-01-01', periods=1400, freq='H'),  # 生成7天以上的小时级数据
    'visitors': pd.np.random.randint(10, 150, size=1400)
}
df = pd.DataFrame(data)

# 从时间戳提取星期名称和小时
df['day_of_week'] = df['timestamp'].dt.day_name()  # 得到"Monday"、"Tuesday"这类字符串
df['hour'] = df['timestamp'].dt.hour  # 得到0-23的小时数

如果你的星期字段是数字格式(0=周一,6=周日),可以用dt.dayofweek替代dt.day_name(),后续调整星期列表即可。

2. 按星期过滤并绘制子图

我们用Matplotlib的子图布局来放7个直方图,这里选择3行3列的布局(刚好放下7个,剩下2个隐藏即可):

# 定义星期顺序(确保从周一到周日排列)
week_days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

# 创建子图布局
fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(16, 12))
axes = axes.flatten()  # 把二维子图数组转为一维,方便循环遍历

# 循环每个星期,绘制对应直方图
for idx, day in enumerate(week_days):
    # 过滤当前星期的数据
    filtered_data = df[df['day_of_week'] == day]
    
    # 统计每个小时的平均到访人数(避免同一小时多个数据点重叠,更直观)
    hourly_avg = filtered_data.groupby('hour')['visitors'].mean().reset_index()
    
    # 绘制柱状图(用bar比hist更适合展示每个小时的数值)
    axes[idx].bar(hourly_avg['hour'], hourly_avg['visitors'], color='#4287f5')
    axes[idx].set_title(f'{day} Hourly Visitor Count', fontsize=12)
    axes[idx].set_xlabel('Hour of Day', fontsize=10)
    axes[idx].set_ylabel('Number of Visitors', fontsize=10)
    axes[idx].set_xticks(range(0, 24))  # 设置x轴刻度为0-23点
    axes[idx].grid(axis='y', linestyle='--', alpha=0.7)  # 添加y轴网格线,提升可读性

# 隐藏多余的两个子图(3*3=9,我们只用到前7个)
for i in range(7, 9):
    axes[i].set_visible(False)

plt.tight_layout()  # 自动调整子图间距,避免标题重叠
plt.show()

3. 额外优化建议

  • 如果你的数据量很大,优先用每个小时的平均值/中位数来绘图,避免原始数据的杂乱重叠;
  • 可以给不同星期的柱子设置差异化颜色,或者统一风格保持视觉一致性;
  • 如果需要保存图表,在plt.show()前添加plt.savefig('weekly_hourly_visitors.png', dpi=300)即可生成高清图片。

内容的提问来源于stack exchange,提问作者Hernan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:23:13