我有按每年所有月份拆分的月度数据,如何重建数据集以恢复正常的月度数据?
I have monthly data which I split up by all months for each year, how do I rebuild the data set to get back to normal, monthly data?
我有按年按所有月份拆分的月度数据,因此每个月(一月、二月等)有 25 个点(价值 25 年的月度数据)。
我每个月拆分数据集的原因是因为我想每个月单独去趋势。
现在我遇到的问题是如何重建数据集以恢复正常的月度数据?
澄清一下,月度数据集分为一月、二月、三月等,每年所有一月的 25 个点(总共 25 年)。
这是我拆分月份的功能:
def split_months(monthly_data):
month_split = []
for month in range(12):
month_split.append(monthly_data[month::12])
month_split = np.array(month_split)
return month_split
应用于我的时间序列的函数是:
lsds = split_months(ob_monthly(fwf_tot_grnl,26,28))
print(lsds.shape)
(12, 25)
原始时间序列基本上就是这个精确的值数组(每个数字代表月均值):
data = np.array(
[ 4.44 3.614 4.0460005 5.1229997 8.181001 23.88
48.895 26.740002 7.454 9.884 5.093 4.2770004
3.8999999 4.9040003 3.736 4.4030004 22.261 40.200005
62.825005 47. 20.904001 10.974 5.723 4.5070004
4.04 3.5040002 3.7760003 8.803 19.691 25.249998
64.494995 44.36 8.723998 5.4339995 4.6829996 4.1770005
3.8999999 3.4340003 3.726 11.383001 19.711 39.320004
81.924995 44.109993 15.584 6.5639997 9.043 5.3770003
4.9 5.644 5.426 9.943001 22.291 30.459997
45.245003 30.32 15.934 5.694 5.873 4.597
4.6400003 3.654 3.9460003 8.813 21.901 46.29
54.90499 33.729996 14.974 7.3840003 5.9030004 5.0770006
4.4700007 3.764 4.586 10.782999 19.921 59.17
77.784996 41.09 13.904 5.244 4.183 4.077
4.596 5.039 4.853 10.633999 11.36 25.538
66.06901 60.221 9.421 5.9580007 7.3010006 5.1370006
9.871 5.959001 6.2910004 11.011 15.582 41.586002
61.489 62.522 22.592005 8.76 7.284001 6.6680017
6.3420005 5.6429996 6.397001 13.169999 15.686999 35.1
69.087 61.676994 16.506002 8.993002 9.748 9.421001
7.5270014 6.089 6.802001 7.0059996 25.265001 52.129
71.71501 37.315002 23.323002 8.122001 6.8900003 6.7650013
7.5070014 5.7620006 6.369001 9.704 16.115002 61.615997
78.908 75.03501 24.828001 18.709 8.946001 7.6440015
7.036001 8.021001 6.745001 8.9609995 25.263998 53.342
66.784 60.457996 12.041001 8.851002 7.6539993 7.332002
8.109002 9.958001 10.364 9.103999 25.901 49.302998
77.47001 47.663006 17.101002 9.033002 12.889999 8.370002
7.4340014 6.643001 8.225 8.264002 27.967001 30.463001
71.04099 66.920006 15.218003 10.14 7.986001 7.931002
11.101 6.612001 7.8220005 8.818002 15.4159975 57.508
95.218994 76.62101 15.224001 9.743 9.98 7.506002
7.056001 6.377001 8.582001 11.452001 26.950003 48.557995
80.06599 46.355 13.2630005 13.066001 10.836 8.853002
7.9060006 6.7550006 7.1250005 8.478 18.976002 39.144997
74.204994 46.373 10.978003 8.085002 7.340002 7.4710016
8.144002 6.551 7.689001 11.208 36.002 66.902
102.02799 82.63899 26.937 11.016 9.987 8.977001
8.089001 6.610002 7.6930013 7.0730014 16.036 50.027996
103.17498 66.486 13.222001 8.791002 8.938003 7.6330013
7.270001 7.9689994 9.035001 15.478998 25.383999 85.61101
131.645 70.778 19.850004 15.265 12.019999 9.633
8.530001 7.2450004 9.307002 11.766 11.969999 38.693996
69.27799 44.055004 14.650001 11.418 9.868003 8.571002
8.055 7.061002 7.7850013 7.9510007 21.322002 45.706993
87.51201 66.734 16.962 9.555001 8.364002 8.183001
7.443001 7.8109994 6.9640007 6.980001 14.530002 38.425
78.09 38.747 18.515001 10.052002 8.556001 7.909002
7.576001 6.868001 7.470001 17.761002 23.598999 55.842
100.045 65.67799 10.5130005 7.649001 7.543002 6.8360014])
然后您可以应用我的函数 split_months(data) 将数据拆分为单独的月份,例如一月(25 个值)、二月(25 个值)等。
每个月分开后如何返回月度数据?基本上我将如何 return 到原始数据数组(称为数据)?
我会应用一个嵌套循环,其中数据的存储方式如下:第一个值第一行,第一个值第二行,...第一个值最后一行。然后第二个值第一行等...这 returns 您的原始数据。我也把它定义为一个函数:
def merge_months(split_data):
merged_months = []
for value in range(len(split_data[0])):
for month in range(len(split_data)):
merged_months.append(split_data[month][value])
return merged_months
这就是您要找的吗?请注意,这仅在所有月份都具有相同数量的数据点时才有效。否则,您需要在嵌套循环的第一行更改 len(split_data[0])):
。
我有按年按所有月份拆分的月度数据,因此每个月(一月、二月等)有 25 个点(价值 25 年的月度数据)。 我每个月拆分数据集的原因是因为我想每个月单独去趋势。 现在我遇到的问题是如何重建数据集以恢复正常的月度数据?
澄清一下,月度数据集分为一月、二月、三月等,每年所有一月的 25 个点(总共 25 年)。
这是我拆分月份的功能:
def split_months(monthly_data):
month_split = []
for month in range(12):
month_split.append(monthly_data[month::12])
month_split = np.array(month_split)
return month_split
应用于我的时间序列的函数是:
lsds = split_months(ob_monthly(fwf_tot_grnl,26,28))
print(lsds.shape)
(12, 25)
原始时间序列基本上就是这个精确的值数组(每个数字代表月均值):
data = np.array(
[ 4.44 3.614 4.0460005 5.1229997 8.181001 23.88
48.895 26.740002 7.454 9.884 5.093 4.2770004
3.8999999 4.9040003 3.736 4.4030004 22.261 40.200005
62.825005 47. 20.904001 10.974 5.723 4.5070004
4.04 3.5040002 3.7760003 8.803 19.691 25.249998
64.494995 44.36 8.723998 5.4339995 4.6829996 4.1770005
3.8999999 3.4340003 3.726 11.383001 19.711 39.320004
81.924995 44.109993 15.584 6.5639997 9.043 5.3770003
4.9 5.644 5.426 9.943001 22.291 30.459997
45.245003 30.32 15.934 5.694 5.873 4.597
4.6400003 3.654 3.9460003 8.813 21.901 46.29
54.90499 33.729996 14.974 7.3840003 5.9030004 5.0770006
4.4700007 3.764 4.586 10.782999 19.921 59.17
77.784996 41.09 13.904 5.244 4.183 4.077
4.596 5.039 4.853 10.633999 11.36 25.538
66.06901 60.221 9.421 5.9580007 7.3010006 5.1370006
9.871 5.959001 6.2910004 11.011 15.582 41.586002
61.489 62.522 22.592005 8.76 7.284001 6.6680017
6.3420005 5.6429996 6.397001 13.169999 15.686999 35.1
69.087 61.676994 16.506002 8.993002 9.748 9.421001
7.5270014 6.089 6.802001 7.0059996 25.265001 52.129
71.71501 37.315002 23.323002 8.122001 6.8900003 6.7650013
7.5070014 5.7620006 6.369001 9.704 16.115002 61.615997
78.908 75.03501 24.828001 18.709 8.946001 7.6440015
7.036001 8.021001 6.745001 8.9609995 25.263998 53.342
66.784 60.457996 12.041001 8.851002 7.6539993 7.332002
8.109002 9.958001 10.364 9.103999 25.901 49.302998
77.47001 47.663006 17.101002 9.033002 12.889999 8.370002
7.4340014 6.643001 8.225 8.264002 27.967001 30.463001
71.04099 66.920006 15.218003 10.14 7.986001 7.931002
11.101 6.612001 7.8220005 8.818002 15.4159975 57.508
95.218994 76.62101 15.224001 9.743 9.98 7.506002
7.056001 6.377001 8.582001 11.452001 26.950003 48.557995
80.06599 46.355 13.2630005 13.066001 10.836 8.853002
7.9060006 6.7550006 7.1250005 8.478 18.976002 39.144997
74.204994 46.373 10.978003 8.085002 7.340002 7.4710016
8.144002 6.551 7.689001 11.208 36.002 66.902
102.02799 82.63899 26.937 11.016 9.987 8.977001
8.089001 6.610002 7.6930013 7.0730014 16.036 50.027996
103.17498 66.486 13.222001 8.791002 8.938003 7.6330013
7.270001 7.9689994 9.035001 15.478998 25.383999 85.61101
131.645 70.778 19.850004 15.265 12.019999 9.633
8.530001 7.2450004 9.307002 11.766 11.969999 38.693996
69.27799 44.055004 14.650001 11.418 9.868003 8.571002
8.055 7.061002 7.7850013 7.9510007 21.322002 45.706993
87.51201 66.734 16.962 9.555001 8.364002 8.183001
7.443001 7.8109994 6.9640007 6.980001 14.530002 38.425
78.09 38.747 18.515001 10.052002 8.556001 7.909002
7.576001 6.868001 7.470001 17.761002 23.598999 55.842
100.045 65.67799 10.5130005 7.649001 7.543002 6.8360014])
然后您可以应用我的函数 split_months(data) 将数据拆分为单独的月份,例如一月(25 个值)、二月(25 个值)等。
每个月分开后如何返回月度数据?基本上我将如何 return 到原始数据数组(称为数据)?
我会应用一个嵌套循环,其中数据的存储方式如下:第一个值第一行,第一个值第二行,...第一个值最后一行。然后第二个值第一行等...这 returns 您的原始数据。我也把它定义为一个函数:
def merge_months(split_data):
merged_months = []
for value in range(len(split_data[0])):
for month in range(len(split_data)):
merged_months.append(split_data[month][value])
return merged_months
这就是您要找的吗?请注意,这仅在所有月份都具有相同数量的数据点时才有效。否则,您需要在嵌套循环的第一行更改 len(split_data[0])):
。