Скользящее среднее не рассчитывается для нового столбца - PullRequest
0 голосов
/ 20 сентября 2019

У меня проблема с вычислением скользящего среднего для столбца, который я добавил в код.По какой-то причине он не работает с добавленным мной столбцом, но работает с столбцом из исходного CSV.

Исходный кадр данных из CSV выглядит следующим образом:

        Open    High     Low    Last  Change   Volume  Open Int
 Time                                                               
09/20/19   98.50   99.00   98.35   98.95    0.60   3305.0       0.0
09/19/19  100.35  100.75   98.10   98.35   -2.00  17599.0       0.0
09/18/19  100.65  101.90  100.10  100.35    0.00  18258.0  121267.0
09/17/19  103.75  104.00  100.00  100.35   -3.95  34025.0  122453.0
09/16/19  102.30  104.95  101.60  104.30    1.55  21403.0  127447.0

Ticker = pd.read_csv('\\......\Historical data\kcz19 daily.csv', 
index_col=0, parse_dates=True)
Ticker['Return'] = np.log(Ticker['Last'] / Ticker['Last'].shift(1)).fillna('')
Ticker['ret20'] = Ticker['Return'].rolling(window=20, win_type='triang').mean()

print(Ticker.head())

           Open    High     Low  ...  Open Int      Return       ret20
Time                              ...                                  
09/20/19   98.50   99.00   98.35  ...       0.0                        
09/19/19  100.35  100.75   98.10  ...       0.0 -0.00608213 -0.00608213
09/18/19  100.65  101.90  100.10  ...  121267.0   0.0201315   0.0201315
09/17/19  103.75  104.00  100.00  ...  122453.0           0           0
09/16/19  102.30  104.95  101.60  ...  127447.0   0.0386073   0.0386073

столбец ret20 должен иметьскользящее среднее для столбца Return, поэтому он должен показывать некоторые данные, начиная с необработанного 21, тогда как это только копия столбца Return здесь.Если я заменю на Последний столбец, это будет работать.Ниже приведен результат использования colum Last

           Open    High     Low  ...  Open Int      Return     ret20
Time                              ...                                
09/20/19   98.50   99.00   98.35  ...       0.0                   NaN
09/19/19  100.35  100.75   98.10  ...       0.0 -0.00608213       NaN
09/18/19  100.65  101.90  100.10  ...  121267.0   0.0201315       NaN
09/17/19  103.75  104.00  100.00  ...  122453.0           0       NaN
09/16/19  102.30  104.95  101.60  ...  127447.0   0.0386073       NaN
09/13/19  103.25  103.60  102.05  ...  128707.0  -0.0149725       NaN
09/12/19  102.80  103.85  101.15  ...  128904.0  0.00823848       NaN
09/11/19  102.00  104.70  101.40  ...  132067.0 -0.00193237       NaN
09/10/19   98.50  102.25   98.00  ...  135349.0  -0.0175614       NaN
09/09/19   97.00   99.25   95.30  ...  137347.0  -0.0335283       NaN
09/06/19   95.35   97.30   95.00  ...  135399.0  -0.0122889       NaN
09/05/19   96.80   97.45   95.05  ...  136142.0  -0.0171477       NaN
09/04/19   95.65   96.95   95.50  ...  134864.0   0.0125002       NaN
09/03/19   96.00   96.60   94.20  ...  134685.0  -0.0109291       NaN
08/30/19   95.40   97.20   95.10  ...  134061.0   0.0135137       NaN
08/29/19   97.05   97.50   94.75  ...  132639.0  -0.0166584       NaN
08/28/19   97.40   98.15   95.95  ...  130573.0   0.0238601       NaN
08/27/19   97.35   98.00   96.40  ...  129921.0 -0.00410889       NaN
08/26/19   95.55   98.50   95.25  ...  129003.0   0.0035962       NaN
08/23/19   96.90   97.40   95.05  ...  130268.0  -0.0149835  98.97775

Цените любую помощь

1 Ответ

0 голосов
/ 21 сентября 2019

.fillna('') создает строку в первой строке, которая затем создает ошибки для скользящего вычисления в Ticker['ret20'].

Удалите это, и код будет работать нормально: Ticker['Return'] = np.log(Ticker['Last'] / Ticker['Last'].shift(1))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...