在数组上使用滑动 window 的时间序列移动平均值

Moving Average of time series using a sliding window over an array

我需要在下面编写一个函数,它可以使用在数组上滑动 window 来计算时间序列的移动平均值。此函数应采用一个日期字符串数组(比如 arr_date)、一个数字数组(比如 arr_record)和一个滑动 window(默认值 50)。它应该:

Return 所有 windows 的词典列表。 每本词典应包括每个 window 处的日期、平均值、最小值、最大值、标准差。 能够通过用最新的可用数据替换缺失数据来处理时间序列中的缺失数据。 (b) 从 Yahoo! 下载 SPY 每日数据(2017 年 12 月 31 日至 2018 年 12 月 31 日)作为 .csv 文件中的测试数据。阅读阅读 .csv 文件示例并编写用于调用您的函数的测试程序。

有没有人有什么想法?对 python 非常陌生并且正在努力。

所以遵循这个逻辑的东西应该是一个很好的起点。希望这是一个有用的开始,欢迎来到 CS 社区。

def sliding_window( dates, numbers, sliding_window_value):

        # list of dictionaries
        return_dicts =[{}]

        # if window size is greater than length of dates, there's only one window
        if sliding_window_value >= len(dates):
            return_dicts += [create_window(dates, numbers)]
            return return_dicts

        # gather all our windows into one list
        for i in range (0, len(dates) - sliding_window_value ):

            # get our window subsets
            dates_subset = dates[i:(sliding_window_value+1)]
            numbers_subset = numbers[i:(sliding_window_value+1)]

            # get our window stats dictionary
            window_stats = create_window(dates_subset,numbers_subset)

            # add these stats to our return list
            return_dicts += [window_stats]

        return return_dicts


def create_window(dates_subset, numbers_subset):
    window_min = 1000000        # some high minimum to start
    window_max = -1000000       # some low maximuim to start
    window_total = 0

    for i in range ( 0, len(dates_subset)):

        # calculate total
        window_total += numbers_subset[i]

        # calculate max
        if numbers_subset[i] > window_max:
            window_max = numbers_subset[i]

        # calculate min
        if numbers_subset[i] < window_min:
            window_min = numbers_subset[i]

        # other calculations....


    return_dict = {
        "min" : window_min,
        "max" : window_max,
        "average" : window_total / len(dates_subset),
        # other calculations....
    }

    return return_dict

祝你好运,工作是值得的。