gpt4 book ai didi

python - 无法为每日时间序列 reshape 我的数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:04 27 4
gpt4 key购买 nike

我有一个数据集,其中包含从 11 月 1 日到 11 月 15 日每分钟收集的数据。时间是一列,从 11/1/2016 00:00:0011/15/2016 23:59:59 我正在尝试 reshape 此数据集,以便每一分钟都是一列,每一天都是一行。因此[第 1 行,第 1 列]将在 11 月 1 日 12:00 获得数据,而[第 2 行,第 1 列]`将在 12:00 获得数据11/2,等等。目前,我的数据集

我正在尝试使用 reshape 函数,如果我检查值,它们没有正确匹配。在我的代码中,myData 的第 2 列是我需要 reshape 的数据,我有 1440 列,因为这是一天中的分钟数。 15 行,因为那是我数据集中的天数。

知道我可能哪里出错了吗?

myData = pd.read_csv("Nov1-15.csv")
myData = [myData.iloc[:,2]]
myData = np.asarray(myData)
myData = np.reshape(myData, (1440,15))
myData = np.transpose(myData)

我的数组,在 reshape 之后,目前看起来像下面这样:

array([[ 137.,  138.,  136., ...,  345.,  614.,  337.],
[ 137., 137., 138., ..., 340., 611., 337.],
[ 138., 136., 138., ..., 373., 611., 336.],
...,
[ 137., 138., 409., ..., 615., 336., 214.],
[ 136., 136., 412., ..., 614., 334., 214.],
[ 138., 136., 411., ..., 617., 339., 215.]])

我的原始数据集如下所示,在我从 csv 中读取它并隔离第二列之后:

[0        137.0
1 137.0
2 138.0
3 137.0
4 136.0
5 138.0
6 137.0
7 141.0
8 137.0
9 139.0
10 136.0
11 136.0
12 137.0
13 136.0
14 138.0
15 138.0
16 137.0
17 136.0
18 138.0
19 137.0
20 137.0
21 138.0
22 138.0
23 137.0
24 135.0
25 138.0
26 138.0
27 138.0
28 136.0
29 136.0
...
21570 614.0
21571 611.0
21572 611.0
21573 611.0
21574 610.0
21575 570.0
21576 346.0
21577 341.0
21578 337.0
21579 337.0
21580 336.0
21581 337.0
21582 336.0
21583 334.0
21584 339.0
21585 337.0
21586 337.0
21587 336.0
21588 238.0
21589 222.0
21590 222.0
21591 220.0
21592 217.0
21593 217.0
21594 214.0
21595 214.0
21596 278.0
21597 214.0
21598 214.0
21599 215.0

示例数据:

11/1/2016 0:00      213
11/1/2016 0:01 214
11/1/2016 0:02 213
11/1/2016 0:03 213
11/1/2016 0:04 210
11/1/2016 0:05 210
11/1/2016 0:06 209
11/1/2016 0:07 209

最佳答案

reshape :

尝试改变:

myData = np.reshape(myData, (1440,15))

到:

myData = np.reshape(myData, (15, 1440))

演示:

3行4列:

In [333]: np.arange(12).reshape(3,4)
Out[333]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

4 行 3 列:

In [334]: np.arange(12).reshape(4,3)
Out[334]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])

Pandas 解决方案:

使用pivot方法,如果您没有滞后(缺少分钟的数据):

In [48]: df
Out[48]:
ts val
0 2016-11-16 00:00:00 213
1 2016-11-16 00:01:00 214
2 2016-11-16 00:02:00 213
3 2016-11-16 00:03:00 213
4 2016-11-16 00:04:00 210
5 2016-11-16 00:05:00 210
6 2016-11-16 00:06:00 209
7 2016-11-16 00:07:00 209

In [50]: df.assign(d=df.ts.dt.date, m=df.ts.dt.minute) \
.pivot(index='d', columns='m', values='val')
Out[50]:
m 0 1 2 3 4 5 6 7
d
2016-11-16 213 214 213 213 210 210 209 209

否则使用pivot_table()方法:

In [52]: df.assign(d=df.ts.dt.date, m=df.ts.dt.minute) \
.pivot_table(index='d', columns='m', values='val', aggfunc='mean', fill_value=0)
Out[52]:
m 0 1 2 3 4 5 6 7
d
2016-11-16 213 214 213 213 210 210 209 209

关于python - 无法为每日时间序列 reshape 我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com