NILM-利用nilmtk读取iawe数据集电器数据

参考nilmtk官方提供的notebook
结合API手册,深入理解。

断点运行

import sys
sys.path.append('G:/Code/')
from nilmtk import DataSet

iawe = DataSet(r'G:\Code\DataSet\IAWE\iawe.h5')
elec = iawe.buildings[1].elec
fridge = elec['fridge']
df = next(fridge.load())

查看当前各变量类型
在这里插入图片描述
此时fridge是ElecMeter类型,然后调用load()方法
查看对应API手册
frige.load()返回的是a generator of DataFrames在这里插入图片描述
可以对应看到df此时是个DataFrames,看一下内容:
在这里插入图片描述

如何返回一个功率序列(power series)?

查看frige这个电器拥有多少columns,那到底需要在API手册怎么搜索呢?
首先此时的frige是ElecMeter类型,所以在ElecMeter定义的方法里面找
查看手册,调用available_columns(),返回一个list,list里面的元素是tuples且tuples是( , )的形式。
在这里插入图片描述

print(fridge.available_columns())

此时返回是
在这里插入图片描述
比如我们现在需要返回一个视在功率的Series,查找手册

在这里插入图片描述
在传入参数ac_type = “apparent”

series = next(fridge.power_series(ac_type='apparent'))

在这里插入图片描述

如何指定物理量并返回相应的列?

前面通过available_columns()可以知道物理量有power、voltage、current、frequency和power factor
假如现在要返回power,且包含active、reactive和apparent,要怎么调用?根据ElecMeter的load方法需要传入参数physical_quantity和ac_type
在这里插入图片描述

df = next(fridge.load(physical_quantity = 'power',ac_type = None))

在这里插入图片描述

如何根据需要返回重采样的数据?

从上面的时间戳可以看到目前是采样频率为1Hz,假如希望得到的数据是一分钟一个数据点,怎么读取?
load()方法提供了resample参数
在这里插入图片描述
60s取一个数据点,即

df = next(fridge.load(physical_quantity = 'power',ac_type = None, sample_period=60))

在这里插入图片描述

总结:

1.frige是ElecMeter类型,因此想要读取frige的数据时候,需要根据手册,在ElecMeter下面找方法
2.需要以Series的形式返回数据时候,调用load_series(),如果是提取功率数据,可以直接调用power_series()
3.需要以DataFrame的形式返回数据时候,调用load()。

2023年5月9日 22:26:50更新:链接在评论区,需要科学上网。

猜你喜欢

转载自blog.csdn.net/aa2962985/article/details/121141974