如何从全年8760小时家庭用电数据绘制24小时用电变化图?
解决方案
要绘制单日24小时的用电变化曲线,核心是把全年8760小时的数据按一天中的小时(0-23)分组聚合,得到每个时刻的典型用电值,再基于此绘图。以下是具体实现步骤:
步骤1:提取小时信息并分组聚合
在你已经将Time设为索引的基础上,直接提取索引的小时部分,然后按小时对各家庭类型的用电数据取均值(也可根据需求取中位数、总和等):
# 提取小时(0-23),按小时分组计算均值,得到全年日均的小时用电数据 hourly_profile = Energy.groupby(Energy.index.hour).mean()
这一步会自动把全年中同一小时的数据归为一组,计算均值后得到24行(对应0-23点)的数据集,就是全年各时刻的平均用电模式。
步骤2:绘制24小时用电曲线
用matplotlib绘制聚合后的结果,横轴设为0-23小时,纵轴为用电负荷:
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(10, 6)) # 遍历各家庭类型列,分别绘制曲线 for col in hourly_profile.columns: ax.plot(hourly_profile.index, hourly_profile[col], label=col) ax.set_ylabel('小时用电量 [kWh]', size=12) ax.set_xlabel('一天中的小时(0-23)', size=12) ax.set_xticks(range(0, 24)) # 设置横轴刻度为0到23 ax.legend() plt.title('全年日均24小时用电负荷曲线') plt.show()
可选:绘制某特定日期的单天曲线
如果需要查看某一天的实际24小时用电情况,直接筛选该日期的数据即可:
# 筛选2019年1月1日的数据 specific_day = Energy.loc['2019-01-01'] fig, ax = plt.subplots(figsize=(10, 6)) for col in specific_day.columns: ax.plot(specific_day.index.hour, specific_day[col], label=col) ax.set_ylabel('小时用电量 [kWh]', size=12) ax.set_xlabel('小时(0-23)', size=12) ax.set_xticks(range(0, 24)) ax.legend() plt.title('2019-01-01 24小时用电负荷曲线') plt.show()
关键说明
- 你之前直接绘制
Energy会遍历全年所有时间点,所以得到的是全年曲线;按小时聚合后,数据量压缩为24个点,就能聚焦单日模式。 - 如果你的数据中有重复列名(比如示例里的两个
Affluent),建议先重命名处理,避免聚合出错:householdData.columns = ['Time', 'Affluent_1', 'Adversity', 'Affluent_2', 'Comfortable'] Energy = householdData.set_index('Time')
内容的提问来源于stack exchange,提问作者tellerYL
相关产品推荐
相关产品推荐

