找回密码
 立即注册
查看: 289|回复: 0

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

[复制链接]
发表于 2022-6-28 20:08 | 显示全部楼层 |阅读模式
参考nilmtk官方提供的notebook
结合API手册,深入理解。
断点运行
  1. import sys
  2. sys.path.append('G:/Code/')from nilmtk import DataSet
  3. iawe = DataSet(r'G:\Code\DataSet\IAWE\iawe.h5')
  4. elec = iawe.buildings[1].elec
  5. fridge = elec['fridge']
  6. 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是( , )的形式。


  1. print(fridge.available_columns())
复制代码
此时返回是


比如我们现在需要返回一个视在功率的Series,查找手册

在传入参数ac_type = “apparent”
  1. 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


  1. df =next(fridge.load(physical_quantity ='power',ac_type =None))
复制代码


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

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


60s取一个数据点,即
  1. 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()。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 03:57 , Processed in 0.088274 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表