数据集概览
我们使用的数据来自 Kaggle 上的 Household Electricity Consumption 数据集,包含一个家庭在 2007 年 1 月至 6 月间的详细用电记录。数据量约为 24 万条,涵盖了全球有功功率、无功功率、电压、电流强度以及分项计量(厨房、洗衣房、热水器/空调)等信息。
| 列名 | 说明 |
|---|---|
| Date | 日期 |
| Time | 时间 |
| Global_active_power | 总有功功率(千瓦) |
| Global_reactive_power | 总无功功率(千瓦) |
| Voltage | 电压(伏特) |
| Global_intensity | 平均电流强度(安培) |
| Submetering1 | 厨房有功功率 |
| Submetering2 | 洗衣房有功功率 |
| Submetering3 | 热水器和空调有功功率 |
数据清洗与探索性分析
拿到数据后,第一步是加载并检查基本结构。这里直接读取 CSV 文件,注意处理缺失值和格式转换。
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=0)
df.head()
![数据头部预览]
为了后续分析方便,我们可以将数值列统一转换为浮点数。原始数据中部分字段可能包含 ? 或其他非数字字符,需要预处理。
from tqdm.auto import tqdm
# 将 'Date' 列转换为日期时间格式
df['Date'] = pd.to_datetime(df['Date'])
# 定义需要转换为数字的列
num_cols = ['Global_active_power', 'Global_reactive_power', 'Voltage',
'Global_intensity', 'Submetering1', 'Submetering2', 'Submetering3']
# 定义转换函数,遇到无法转换的值返回 0
def safe_float():
:
(s)
:
col num_cols:
df[col] = df[col].apply(safe_float)


