Python 家庭用电数据分析与 Prophet 时间序列预测
数据集简介
本次分析基于 Kaggle 上的 Household Electricity Consumption 数据集,包含一个家庭在 2007 年 1 月至 6 月间的详细用电记录。数据涵盖全球有功功率、无功功率、电压、电流强度以及分项计量(厨房、洗衣房、热水器/空调)等关键指标,共计约 26 万条测量值。
| 列名 | 说明 |
|---|---|
| Date | 日期 |
| Time | 时间 |
| Globalactivepower | 总有功功率(千瓦) |
| Globalreactivepower | 总无功功率(千瓦) |
| Voltage | 电压(伏特) |
| Global_intensity | 平均电流强度(安培) |
| Submetering1 | 厨房有功功率 |
| Submetering2 | 洗衣房有功功率 |
| Submetering3 | 热水器和空调有功功率 |
数据预处理与探索性分析
首先导入必要的库并读取数据。由于原始数据量较大且部分字段为字符串格式,我们需要进行类型转换和缺失值处理。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data_path = "./household_power_consumption.csv"
df = pd.read_csv(data_path, index_col='index')
df.head()
为了便于后续分析,可以将列名替换为中文,这一步是可选的,取决于个人习惯:
# df.rename(columns={
# 'Date': '日期', 'Time': '时间',
# 'Global_active_power': '有功功率',
# 'Global_reactive_power': '无功功率',
# 'Voltage': '电压', 'Global_intensity': '电流',
# 'Sub_metering_1': '厨房', 'Sub_metering_2': '洗衣房',
# 'Sub_metering_3': '热水器/空调'
# }, inplace=True)
查看统计信息有助于了解数据分布:
df.describe()
接下来是关键的类型转换。Prophet 模型要求日期列为 datetime 类型,数值列必须为浮点数。原始 CSV 中常含有缺失标记(如"?"),直接转换会报错,因此需要自定义函数处理异常值。


