0
votes

Comment calculer une moyenne mobile simple de la liste des dicts?

J'utilise un module robin_stocks ici pour calculer les historiques des stocks, puis triez-les par date. xxx pré>

sortie: p>

Stock: F, Date: 2020-06-24T00:00:00Z, Open: 6.060000, Close: 5.950000
Stock: F, Date: 2020-06-25T00:00:00Z, Open: 5.860000, Close: 6.030000
Stock: F, Date: 2020-06-26T00:00:00Z, Open: 6.040000, Close: 5.910000
Stock: F, Date: 2020-06-29T00:00:00Z, Open: 5.910000, Close: 6.010000
Stock: F, Date: 2020-06-30T00:00:00Z, Open: 5.980000, Close: 6.080000


1 commentaires

Consultez de mettre vos données dans un pandas.dataframe . Ceci a une fonction roulant sur laquelle vous pouvez calculer la moyenne de roulement.


3 Réponses :


0
votes
close_prices = [float(stock['close_price']) for stock in stock_price]
avg = sum(close_prices) / len(close_prices)
If you wish to apply rolling mean with custom window sizes and use pandas, you can do it with pandas.DataFrame.rolling.

2 commentaires

Um I Obtenir cette erreur: AVG = SUM (Fermer_PRICES) / LEN (FROCHT_PRICES) TYPEERROR: Type (s) de l'opérande non pris en charge pour +: 'int' et 'str'


Sont les valeurs sous fermer_price string? Essayez [Float (Stock ['Fermer_Prix]]) Pour stock dans Stock_Price] à la place.



0
votes

Vous pouvez simplement calculer la somme de votre pour code> boucle: xxx pré>

diviser la somme par le nombre de stocks: p>

close_average = close_sum / len(stock_price)


2 commentaires

Je continue à obtenir l'erreur suivante: fermer_sum + = Stock ['Fermer_price'] TypeError: Type (s) d'opérande non pris en charge pour + =: 'int' et 'Str' des idées?


@CameronRosenbaum Vous devez calculer avec des chiffres, pas des cordes. L'erreur vient de votre entrée, il affecte donc toutes les réponses. Il suffit d'appliquer la conversion float () , comme suggéré dans une autre réponse . Ma réponse a été mise à jour.



0
votes

Si vous avez un dictionnaire que le titre indique (au lieu de "Imprimer" affiché dans votre code), vous pouvez le convertir en DataFrame avec:

your_df['SMA'] = your_df['Close'].rolling(window=10,center=False).mean()


1 commentaires

C'est génial! Merci