任务
利用一个家庭的用电量,来预测这个家庭未来的用电量。
学会了这一个例子,如果有电网数据,就可以开发出适合各种业务需求的模型。
比如:
-
通过预测各时段各区域的用电量来协助电网更好地实现电能调度
-
用于新能源电站(光伏、风力、水电)发电量预测
数据集
数据集来源:加州大学欧文分校机器学习存储库
数据集名称:Individual household electric power consumption Data Set
下载地址:
https://archive.ics.uci.edu/ml/datasets/individual+household+electric+power+consumption
数据集分析:
该数据集是一个多变量时间序列数据集,采集了法国巴黎一个家庭近四年(2006年12月至2010年11月)的用电量,采样周期为1分钟。
date:格式dd/mm/yyyy;
time:格式hh:mm:ss;
global_active_power:每分钟的有功功率(千瓦);
global_reactive_power:每分钟的无功功率(千瓦);
voltage:每分钟的平均电压(伏特);
global_intensity:每分钟的平均电流强度(安培);
sub_metering_1:厨房有功电能(瓦时),主要包含洗碗机,烤箱和微波炉;
sub_metering_2:于洗衣房有功电能(瓦时),包含洗衣机,滚筒式烘干机,冰箱和电灯;
sub_metering_3:电热水器和空调有功电能(瓦时)。
以上数据都是间隔一分钟测得的,有功功率单位为 KW,有功电能的单位为瓦时,通过有功率乘以时间(1分钟=1/60小时)乘以1000计算得到总的有功电能消耗,单位为瓦时,减去三个sub之和,得到了家庭中其他电路的电能消耗。
sub_metering_remainder = (global_active_power * 1000 / 60) - (sub_metering_1 + sub_metering_2 + sub_metering_3)
数据处理
下载后的数据是txt文件,如下图所示:
读入数据:
df = pd.read_csv('household_power_consumption.txt', sep=';',header=0,low_memory=False,infer_datetime_format=True,engine='c',parse_dates={'datetime':[0,1]},index_col=['datetime'])
read_csv() 参数说明:
sep:指定列之间的分隔符为 ';',字符串格式,默认为 ‘,’;
header:指定哪一行作为列名,header=0 表示第一行数据作为列名,而不是文件的第一行作为列名;
low_memory:在内部对文件进行分块处理,从而在解析时减少了内存使用,但可能是混合类型推断。默认为 True,设置为 False 确保没有混合类型;
infer_datetime_format:设置该参数为 True 和 parse_dates 参数,pandas会推断列中日期时间字符串的格式,如果可以推断出,则切换到更快方法来解析它们。在某些情况下,这可以使解析速度提高5-10倍;
engine:要使用的解析器引擎。C引擎速度更快,而python引擎当前功能更完善;
parse_dates:{'datetime':[0,1]}将原数据中的第1、2列作为新的列名为 ‘datatime’ 的列,即将原来的日期列、时间列合并为日期时间一列;
index_col:指定’datetime’列为索引列;
看一下数据的行列数:
df.shape