我有按每年所有月份拆分的月度数据,如何重建数据集以恢复正常的月度数据?

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])):