J'ai besoin d'obtenir des données boursières à l'aide de pandas DataReader pour les banques suivantes:
import numpy as np import pandas as pd from pandas_datareader import data, wb import matplotlib import matplotlib.pyplot as plt import seaborn as sns import requests import io %matplotlib inline import datetime start = datetime.datetime(2006,1,1) end = datetime.datetime(2016,1,1) # Bank of America BAC = data.DataReader("BAC",'ff', start, end)
Comment obtenir les données boursières du 1er janvier 2006 au 1er janvier 2016 pour chacune de ces banques. p>
J'ai essayé ...
Bank of America CitiGroup Goldman Sachs JPMorgan Chase Morgan Stanley Wells Fargo
3 Réponses :
Votre problème est avec la source que vous utilisez pour récupérer les données avec Datareader. Il ne semble pas que 'ff'
corresponde à une API acceptée.
J'ai essayé et cela fonctionne:
import pandas_datareader.data as web from datetime import datetime start = datetime(2016, 9, 1) end = datetime(2018, 9, 1) f = web.DataReader('BAC', 'iex', start, end) print(f)
Aussi , jetez un œil à la documentation officielle pandas-datareader , il y a plein d'exemples.
Voici la méthode que je trouve très fiable contrairement aux autres, je ne l'utilise que pour analyser et cela ne m'a jamais déçu. (De plus, la plage de dates pour les données disponibles est très étendue, comme dans l'exemple ci-dessous)
from datetime import datetime start = datetime(2006, 2, 9) end = datetime(2018, 5, 24) #Bank Of America BAC = data.DataReader('BAC', 'yahoo', start, end)
Une autre solution que vous pouvez essayer est investpy qui est un package Python pour l'extraction de données historiques depuis divers produits financiers du monde entier d'Investing.com. Il n'a aucune limitation, aucune clé API nécessaire et il est totalement gratuit puisqu'il s'agit d'un projet open-source.
Ici, je vous présente un morceau de code afin de récupérer les données historiques de stock des 9 dernières années des actions que vous demandé ci-dessus:
import investpy stocks = ['Bank of America', 'CitiGroup', 'Goldman Sachs', 'JPMorgan', 'Morgan Stanley', 'Wells Fargo&Co'] for stock in stocks: print(investpy.search_stocks(by='name', value=stock))
J'espère que cela vous a aidé! Et je vous encourage également à utiliser investpy final!
Notez que les fonctions de récupération des données boursières investpy prennent comme paramètre d'entrée à la fois le symbole boursier et le pays d'où le le stock spécifié est. Ainsi de suite, comme votre entrée concernait les noms d'actions, vous devrez effectuer une recherche sur les données d'investpy afin de récupérer le symbole des noms d'actions que vous avez introduits, cela pourrait être fait comme suit:
import investpy stock_symbols = ['BAC', 'C', 'GS', 'JPM', 'MS', 'WFC'] for stock_symbol in stock_symbols: df = investpy.get_stock_historical_data(stock=symbol, country='united states', from_date='01/01/2010', to_date='01/01/2019') print(df.head())
Le code ci-dessus imprimera tous les stocks trouvés qui correspondent totalement ou partiellement au nom introduit.