2016-12-07 1 views
0

AVERTISSEMENT: NEWBIEdifférence entre l'appel des finances de Yahoo 0,18 à 0,19

i avait mis hors de la mise à niveau pandas géants 0,18 à 0,19 jusqu'à ce matin. ce code utilisé pour juste donner un avertissement deprication:

import pandas.io.data as web 
x = web.DataReader('GE','yahoo',(2016, 10, 1), (2016, 11, 1)) 

maintenant il renvoie une erreur et me dit: « Le module pandas.io.data est déplacé dans un paquet séparé » builtins.ImportError: Les pandas géants. Le module io.data est déplacé dans un paquet séparé (pandas-datareader). Après avoir installé le paquet-datareader pandas géants (https://github.com/pandas-dev/pandas-datareader), vous pouvez modifier l'importation from pandas.io import data, wb-from pandas_datareader import data, wb «

donc, je réécris mon "from ... import ..." ligne:.

from pandas_datareader import data, wb 

comme prévu, quand je lance le code, il renvoie une erreur:

builtins.NameError: name 'web' is not defined 

lorsque je tente ce code:

x = wb.pandas-datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1)) 

cette erreur est jeté:

builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'pandas' 

lorsque je tente ce code:

x = wb.Datareader('GE','yahoo',(2016, 10, 1), (2016, 11, 1)) 

cette erreur est renvoyée:

builtins.AttributeError: module 'pandas_datareader.wb' has no attribute 'DataReader' 

quelqu'un peut-il s'il vous plaît me dire comment appeler le datareader maintenant ? merci d'avance

Répondre

1

L'ancienne méthode d'utilisation du lecteur de données dans pandas ne doit pas être utilisée comme première erreur que vous avez rencontrée. Donc n'utilisez jamais import pandas.io.data as web

La bonne façon d'accéder aux modules du nouveau paquet pandas_datareader est ce que vous avez écrit.

from pandas_datareader import data, wb 

data et wb sont des modules (fichiers Python) avec de nombreuses fonctions différentes que vous pouvez appeler pour apporter différents types de données externes dans votre programme. Pour voir toutes les fonctions de chaque module, utilisez la commande dir.

Vous pouvez voir tous les objets disponibles publiquement:

[attribute for attribute in dir(data) if attribute[0] != '_'] 

qui délivre en sortie

['DataReader', 
'EurostatReader', 
'FamaFrenchReader', 
'FredReader', 
'GoogleDailyReader', 
'OECDReader', 
'Options', 
'YahooActionReader', 
'YahooDailyReader', 
'YahooOptions', 
'YahooQuotesReader', 
'get_components_yahoo', 
'get_data_famafrench', 
'get_data_fred', 
'get_data_google', 
'get_data_yahoo', 
'get_data_yahoo_actions', 
'get_quote_google', 
'get_quote_yahoo', 
'warnings'] 

Donc, ce sont tous les éléments que vous pouvez utiliser après la . dans le module data.

Si vous exécutez la même commande dir avec le module wb, vous verrez que DataReader n'existe pas dans ce module. Il existe dans la liste ci-dessus dans le module data.

Enfin, assurez-vous que vous avez épelé correctement votre fonction DataReader a majuscule R. Utilisez l'onglet de compléter pour éviter ces erreurs ou vous obtiendrez le no attribute error. Si la fonction que vous souhaitez n'est pas sortie avec la commande dir, vous utilisez le mauvais module. Accepte également les chaînes sous forme de dates, ce qui suit vous permettra d'obtenir ce que vous voulez.

data.DataReader('GE','yahoo', '2016-10-1', '2016-11-1') 
+0

merci beaucoup pour la réponse complète. J'ai appris deux nouvelles choses! votre solution a parfaitement fonctionné! –