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.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()。
页:
[1]