我有一个时间序列数据集,如下所示:
Dates Power
09-11-12 23:40 123
09-11-12 23:40 0
09-11-12 23:40 0
09-11-12 23:40 0
09-11-12 23:40 0
09-11-12 23:40 123
09-11-12 23:40 123
09-11-12 23:40 122
09-11-12 23:40 122
09-11-12 23:41 122
09-11-12 23:41 0
09-11-12 23:41 0
09-11-12 23:41 161
09-11-12 23:41 123
09-11-12 23:41 124
09-11-12 23:41 123
09-11-12 23:41 123
09-11-12 23:41 123
09-11-12 23:41 123在上面的数据集中,给出了电器每分钟6秒消耗的功率。我想将该数据集转换为1小时时间序列,功率单位=KW/h,即我想将其转换为1小时消耗的功率,而不是每6秒计算一次功耗总和。
我试着用2.77778e-7乘以6秒的功耗来计算它们的总和,但我感觉我做错了。这是正确的做法吗?如果不是,正确的方法是什么?
我使用了下面的代码来总结它们。
data = pd.read_csv(
r'E:\ukdale\house_1\channel_6.dat',
delimiter=' ',
header=None,
names=['Date', 'Power'],
dtype={'Date': np.int64, 'Power': np.float64},
index_col='Date'
)
data.index = pd.to_datetime((data.index.values), unit='s')
ts = pd.Series(data=data['Power'])
ts.multiply(0.000000277778)
ts1=ts.resample('h').sum()
ts1.dropna(inplace=True)我的结果:
Dates Power(KW/h)
09-11-12 22:00 310
09-11-12 23:00 64948
10-11-12 0:00 279706
10-11-12 1:00 386517
10-11-12 2:00 0
10-11-12 3:00 125
10-11-12 4:00 0
10-11-12 5:00 0
10-11-12 6:00 0
10-11-12 7:00 0
10-11-12 8:00 95
10-11-12 9:00 582
10-11-12 10:00 594
10-11-12 11:00 585发布于 2018-07-15 11:45:33
您可以将时间值四舍五入到最接近的小时,然后对其求和:
# Round the Timestamp to the nearest 60 minutes
scalefactor <- 60
data$Dates <- as.POSIXlt(round(as.numeric(data$Dates)/scalefactor) * scalefactor,
origin="1970-01-01")https://stackoverflow.com/questions/51344739
复制相似问题