跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 Prophet 的家庭用电数据时间序列预测分析

综述由AI生成家庭用电数据包含丰富的时序特征,适合用于时间序列预测练习。本文使用 Python 完成数据清洗与探索性分析,重点演示如何应用 Facebook 开源的 Prophet 库进行建模。通过处理缺失值、统一数据类型及可视化相关性,我们构建了预测函数,对有功功率、电压等关键指标进行了未来半年的趋势推演。Prophet 模型凭借其对季节性和节假日效应的自动处理能力,展现了良好的鲁棒性,无需复杂调参即可产出直观结果,适用于具备强周期性的业务场景。

随缘发布于 2026/3/16更新于 2026/6/1218 浏览
基于 Prophet 的家庭用电数据时间序列预测分析

家庭用电数据分析与 Prophet 预测

本次分析基于 Kaggle 上的 Household Electricity Consumption 数据集,包含一个家庭在 2007 年 1 月至 6 月间的详细用电记录。数据涵盖全球有功功率、无功功率、电压、电流强度以及厨房、洗衣房和电热水器/空调的分项计量信息,共计约 26 万条测量值。

数据预处理

首先加载数据并查看前几行,了解数据结构。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data_path = "./household_power_consumption.csv"
df = pd.read_csv(data_path, index_col='index')
df.head()

原始数据中部分数值列包含缺失标记(如'?'),且日期列为字符串格式。我们需要将其转换为标准的时间戳和浮点数类型。

from tqdm.auto import tqdm
from ipywidgets import HBox, FloatProgress, HTML

# 将 'Date' 列转换为日期时间格式
df['Date'] = pd.DatetimeIndex(df['Date'])

# 定义需要转换为数字的列
make_em_num = [
    'Globalactivepower', 'Globalreactivepower', 'Voltage', 
    'Global_intensity', 'Submetering1', 'Submetering2', 'Submetering3'
]

# 定义转换函数,处理非数字字符
def floating(string):
    try:
        return float(string)
    except:
        return float(0)

# 批量转换数据类型
for column in tqdm(make_em_num):
    df[column] = df[column].apply(lambda item: floating(item))

转换完成后,再次检查数据类型确保无误。此时 DataFrame 中的数值列已可参与计算。

探索性分析

通过统计描述和热力图,我们可以快速掌握数据的分布特征和相关性。

# 查看数值列统计信息
df.describe()

# 绘制相关系数热力图
import seaborn as sns
sns.heatmap(df.drop(['Date', 'Time'], axis=1).corr(), annot=True)

热力图展示了各变量间的相关程度,例如电压与电流强度之间通常存在较强的关联。这为后续建模提供了直观的数据洞察。

Prophet 模型预测

Prophet 是 Facebook 开源的一款基于可加性模型的时间序列预测工具,擅长处理具有强季节性、节假日效应及趋势变化的数据。它对于缺失值和异常值也表现出良好的鲁棒性。

我们封装了一个预测函数,支持对任意时间序列列进行未来周期的推演。

from prophet import Prophet

def prophet_forecaster(data, x, y, period=100):
    # 构建 Prophet 所需的标准格式 (ds, y)
    new_df = pd.DataFrame(columns=['ds', 'y'])
    new_df['ds'] = data[x]
    new_df['y'] = data[y]
    
    # 初始化并训练模型
    model = Prophet()
    model.fit(new_df)
    
    # 生成未来日期并预测
    future_dates = model.make_future_dataframe(periods=period)
    forecast = model.predict(future_dates)
    
    # 绘图展示
    fig = model.plot(forecast)
    plt.title(f"Forecasting on the next {period} days for {y}")
    plt.show()

# 采样部分数据进行演示,避免内存溢出
df_sample = df.sample(n=10000)

# 对关键指标进行预测
prophet_forecaster(df_sample, x='Date', y='Globalactivepower', period=180)
prophet_forecaster(df_sample, x='Date', y='Voltage', period=180)

运行上述代码,即可得到未来半年内各项指标的预测曲线。图中不仅包含预测值,还展示了置信区间,帮助评估预测的不确定性。

模型原理与优势

Prophet 的核心思想是将时间序列分解为几个主要成分:

  • 趋势 (g(t)):拟合非周期性的增长或下降,支持分段线性或逻辑增长。
  • 季节 (s(t)):使用傅里叶级数捕捉年度、周度等周期性变化。
  • 假期 (h(t)):通过虚变量处理特定节假日的影响。
  • 噪声 (εt):假设服从高斯分布的随机波动。

相比传统 ARIMA 等方法,Prophet 的优势在于自动化程度高,无需人工干预即可处理混乱数据;参数解释性强,便于结合业务知识调整;同时对缺失值不敏感,无需复杂的插补操作。在实际业务场景中,这种开箱即用的特性非常适合快速验证时序预测方案。

通过可视化的方式反馈预测结果,分析师可以直观地判断模型表现。如果误差较大,还可以进一步调整参数或引入外部回归量,实现更精准的决策支持。

目录

  1. 家庭用电数据分析与 Prophet 预测
  2. 数据预处理
  3. 将 'Date' 列转换为日期时间格式
  4. 定义需要转换为数字的列
  5. 定义转换函数,处理非数字字符
  6. 批量转换数据类型
  7. 探索性分析
  8. 查看数值列统计信息
  9. 绘制相关系数热力图
  10. Prophet 模型预测
  11. 采样部分数据进行演示,避免内存溢出
  12. 对关键指标进行预测
  13. 模型原理与优势
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 批量给图片添加文字或图片水印实战
  • Visual C++ 运行库一体化解决方案
  • 基于 SpringBoot 的在线点餐系统设计与实现
  • Android WebRTC 多人语音通话:架构设计与性能优化
  • LangChain 入门指南:大模型应用开发基础
  • Xinference 大模型部署与分布式推理框架使用指南
  • 基于 Coze 平台构建企业级 AI 客服机器人的实战指南
  • 单链表综合练习:删除指定节点、反转链表与查找中间节点
  • Web 自动化测试入门:从概念到百度搜索实战
  • 掌握 C++ 模板与内存管理,消除代码冗余与内存泄漏
  • 基于 LangChain 实现数据库问答机器人
  • Spring Boot 3.3.4 升级后 Logback 回滚策略配置不兼容问题修复
  • Visual C++ 运行库诊断与部署完整方案
  • C++ 图论基础与实战应用
  • AIGC 产品经理学习指南:核心技能、实战项目与面试准备
  • OpenClaw 机器人抓取平台搭建全流程详解
  • LeetCode 61. 旋转链表
  • 基于 Q-Learning 的无人机三维动态避障路径规划研究
  • 利用 QQ 私聊构建全自动化服务器运维助手
  • Git 配置与基本操作实战指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online