Python - Calcular media n variables valores anteriores array

 
Vista:

Calcular media n variables valores anteriores array

Publicado por Deiv5 (2 intervenciones) el 01/03/2021 22:50:26
Buenas noches, aquí un novato dando primeros pasos con Python y con algun problemilla.

Tengo una matriz por ejemplo como esta:

3 2
1 1
4 6
2 2
3 2
0 0

Y deseo añadir una nueva columna que incluya el promedio de los, p e, 3 valores anteriores (filas superiores) de la segunda columna, quedando:

3 5 NA
1 1 NA
4 6 NA
2 2 4
3 2 3
0 0 3.33

He probado con el numpy.mean pero no consigo calcular el prodemio de algunas filas concretas, y también con n bucle recorriendo cada fila y sumando y dividiendo entre 3, pero haciendo el cálculo OK no consigo asignarlo donde quiero.

Por favor, hay alguna forma sencilla de hacer esto o si es mediante el bucle, como puedo asignar el valor donde quiero?

Gracias por adelantado!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Calcular media n variables valores anteriores array

Publicado por tincopasan (1082 intervenciones) el 02/03/2021 04:08:12
ok ¿y por qué no pones lo que has intentado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Calcular media n variables valores anteriores array

Publicado por Deiv5 (2 intervenciones) el 02/03/2021 11:21:14
EDITO, parece que conseguido con data.loc[i:,"MEDIA"] = media


Toda la razón, disculpa. El código que manejo (hay cosas que añadir) es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import yfinance as yf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.tsa.stattools as ts
 
#Variables locales
A='PH'
B='ROK'
FECHAINI="2021-02-01"
FECHAFIN="2021-02-26"
TAMAÑO_MEDIA=2
 
# Se descargan los datos históricos de Yahoo Finance
stocks = [A, B]
data = yf.download(stocks, start=FECHAINI, end=FECHAFIN)["Adj Close"]
data.sort_index(inplace=True)
 
 
data["DIVIDIR"] = data[A]/ data[B]
data["LOGN"] = np.log(data["DIVIDIR"])
data["MEDIA"] = 0
 
 
for i in range(len(data)):
    print("i=",i)
    if i >= TAMAÑO_MEDIA:
        suma = data["LOGN"][i-1]+data["LOGN"][i-2]
        media = suma / TAMAÑO_MEDIA
        print(media)
 
        data["MEDIA"][i] = media
 
 
print(data)

Primero quería intentar algo con np.mean y no veía por donde atacarlo
Con ese codigo me dice "A value is trying to be set on a copy of a slice from a DataFrame". He intentado algo similar a data.loc[:, [i,3]] = media y tampoco...

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar