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

Python如何使用Pandas统计一周CSV中每日每小时的设备使用次数

Pandas按日按小时统计设备使用次数解决方案

报错原因

你使用df.groupby(pd.Grouper(key='Timestamp', freq='H')).count()时报错,是因为读取CSV时Timestamp列默认被识别为字符串格式,不属于Pandas的DatetimeIndex类型,不支持直接按时间频率分组。

完整实现代码

方法1:使用pd.Grouper按小时分组(推荐)

import pandas as pd

PATHTOCSV = "你的CSV文件路径"
df = pd.read_csv(PATHTOCSV)
# 核心步骤:将Timestamp列转换为Pandas datetime类型
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
# 按小时分组统计记录数
hourly_stats = df.groupby(pd.Grouper(key='Timestamp', freq='H')).size().reset_index(name='count')

# 按要求格式化输出
for _, item in hourly_stats.iterrows():
    # 跳过无设备使用的空时段
    if item['count'] < 1:
        continue
    date_part = item['Timestamp'].strftime("%Y-%m-%d")
    hour_part = item['Timestamp'].strftime("%H00")
    print(f"{date_part}: {hour_part}, Machine Count: {item['count']}")

方法2:使用提取的日期、小时字段分组

如果你已经提前提取了日期和小时字段,可以直接用两个字段分组实现统计:

import pandas as pd

PATHTOCSV = "你的CSV文件路径"
df = pd.read_csv(PATHTOCSV)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
# 提取日期、小时字段
df['date'] = df['Timestamp'].dt.date
df['hour'] = df['Timestamp'].dt.hour
# 按日期+小时分组统计
hourly_stats = df.groupby(['date', 'hour']).size().reset_index(name='count')

# 格式化输出
for _, item in hourly_stats.iterrows():
    hour_part = f"{item['hour']:02d}00"
    print(f"{item['date']}: {hour_part}, Machine Count: {item['count']}")

两种方法输出的结果都完全符合你要求的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:24:03