gpt4 book ai didi

具有不一致数据点的时间序列数据的 Python 移动平均线

转载 作者:行者123 更新时间:2023-12-04 17:44:32 25 4
gpt4 key购买 nike

当数据以固定间隔(即 1 分钟、5 分钟等)采样时,我发现了大量与移动平均线相关的信息。但是,我需要针对具有不规则时间间隔的时间序列数据集的解决方案。

数据集包含两列,时间戳和价格。时间戳精确到毫秒,行没有设置间隔。我需要使用我的数据框并添加三个移动平均列:

1 分钟5分钟10分钟

我不想对数据重新采样,我希望最终结果具有相同的行数,但三列会根据需要填充。 (IE,NaN 分别直到每列的 1/5/10 分钟间隔)

我觉得我越来越接近了,但不知道如何将移动平均变量传递给这个函数:

import pandas as pd
import numpy as np

# Load IBM data from CSV
df = pd.read_csv(
"C:/Documents/Python Scripts/MA.csv", names=['Timestamp',
'Price'])
# Create three moving average signals
df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce')
df.set_index('Timestamp', inplace=True)


def movingaverage(values, window):
weights = np.repeat(1.0, window)/window
smas = np.convolve(values, weights, 'valid')
return smas


MA_1M = movingaverage(df, 1)
MA_5M = movingaverage(df, 5)
MA_10M = movingaverage(df, 10)

print(MA_1M)

示例数据:

Timestamp               Price
2018-10-08 04:00:00.013 152.59
2018-10-08 04:00:00.223 156.34
2018-10-08 04:01:00.000 152.73
2018-10-08 04:05:00.127 156.34
2018-10-08 04:10:00.000 152.73

Expected Output:

Timestamp Price MA_1M MA_5M MA10M
2018-10-08 04:00:00.013 152.59 N/A N/A N/A
2018-10-08 04:00:00.223 156.34 N/A N/A N/A
2018-10-08 04:01:00.000 154.73 154.55 N/A N/A
2018-10-08 04:05:00.127 155.34 155.34 155.47 N/A
2018-10-08 04:10:00.000 153.73 153.73 154.54 154.55

在每一行,MA 列采用该时间戳并回顾 1、5 或 10 分钟并计算平均值。使这变得困难的是行可以在任何毫秒内生成。在我上面的代码中,我只是试图让移动平均线与时间变量一起工作。我假设只要行数匹配,我就可以使用逻辑向我的 df 添加一列。

最佳答案

除了 NaN 之外,以下是有效的——我不知道你对它们的依恋程度如何:

foo  = df.apply(lambda x: df[(df['Timestamp'] <= x['Timestamp']) & (df['timestamp']> x['timestamp'] - pd.Timedelta('5 min'))]['Price'].mean(), axis=1)

关于具有不一致数据点的时间序列数据的 Python 移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728752/

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