前瞻性平均



我有一个数据框,我想把三点的平均值向前推。我知道如何做最小,但我需要刻薄的任何想法?

!pip install yfinance
import yfinance as yf 
from scipy.stats import linregress
import pandas as pd
import numpy as np
# test data
df = yf.download('^GSPC',start='2009-11-26',end='2014-12-31',interval='1d')
df['min'] = np.fmin(np.fmin(df['Close'].values, df['Close'].shift(-1).values), df['Close'].shift(-2).values)

谢谢

您可以将numpy.mean()numpy.array()上的axis=0一起使用,包括当前日期的收盘价加上提前 2 天的收盘价以获得平均值,如下所示:

df['mean'] = np.mean(np.array([df['Close'].values, df['Close'].shift(-1).values, df['Close'].shift(-2).values]), axis=0)

结果:

print(df.head(10))
Open         High          Low        Close    Adj Close      Volume         mean
Date                                                                                                
2009-11-25  1106.489990  1111.180054  1104.750000  1110.630005  1110.630005  3036350000  1099.250000
2009-11-27  1105.469971  1105.469971  1083.739990  1091.489990  1091.489990  2362910000  1098.659993
2009-11-30  1091.069946  1097.239990  1086.250000  1095.630005  1095.630005  3895520000  1104.576660
2009-12-01  1098.890015  1112.280029  1098.890015  1108.859985  1108.859985  4249310000  1106.006673
2009-12-02  1109.030029  1115.579956  1105.290039  1109.239990  1109.239990  3941340000  1105.046672
2009-12-03  1110.589966  1117.280029  1098.739990  1099.920044  1099.920044  4810030000  1103.050008
2009-12-04  1100.430054  1119.130005  1096.520020  1105.979980  1105.979980  5781140000  1100.389974
2009-12-07  1105.520020  1110.719971  1100.829956  1103.250000  1103.250000  4103360000  1097.046631
2009-12-08  1103.040039  1103.040039  1088.609985  1091.939941  1091.939941  4748030000  1096.746623
2009-12-09  1091.069946  1097.040039  1085.890015  1095.949951  1095.949951  4115410000  1101.569987

最新更新