2013-05-28 5 views
0

J'ai vu this matplotlib example.Tracer des données financières avec matplotlib

Je veux l'utiliser pour les actions indiennes. Maintenant matplotib.finance définit:

def fetch_historical_yahoo(ticker, date1, date2, cachename=None,dividends=False): 
..... 
urlFmt = 'http://table.finance.yahoo.com/table.csv?a=%d&b=%d&c=%d&d=%d&e=%d&f=%d&s=%s& y=0&g=%s&ignore=.csv' 


    url = urlFmt % (d1[0], d1[1], d1[2],d2[0], d2[1], d2[2], ticker, g) 
..... 

et fait alors

urlopen(url) 

Mais le format pour obtenir des données de Yahoo Inde est légèrement différente. Je suis donc allé à in.finance.yahoo.com et a obtenu le lien vers les prix historiques de Reliance Industries comme:

http://ichart.finance.yahoo.com/table.csv?s=RELIANCE.NS&a=03&b=1&c=2012&d=02&e=31&f=2013&g=d&ignore=.csv 

Mais maintenant je pop cela en fonction indian.py comme:

urlFmt='http://ichart.finance.yahoo.com/table.csv?s=%s&d=%d&e=%d&f=%d&g=d&a=%d&b=%d&c=%d&ignore=.csv' 

Quand je exécutez cela, je reçois un HTTP 404 error. Qu'est-ce que je fais mal?

+0

comme une note de côté, il y a un PR pour changer radicalement l'API de ces fonctions (https://github.com/matplotlib/matplotlib/pull/1920). Probablement ne le fera pas jusqu'à 1.4 cependant. – tacaswell

Répondre

0

Je soupçonne que l'ordre des variables dans votre format de chaîne ne correspond plus. En utilisant ce qui suit urlFmt avec l'expression de format de chaîne d'origine fonctionne:

urlFmt = 'http://ichart.finance.yahoo.com/table.csv?a=%d&b=%d&c=%d&d=%d&e=%d&f=%d&s=%s&g=%s&ignore=.csv' 
url = urlFmt % (d1[0], d1[1], d1[2], d2[0], d2[1], d2[2], ticker, g) 

Cela produira le urlhttp://ichart.finance.yahoo.com/table.csv?s=RELIANCE.NS&a=3&b=1&c=2012&d=2&e=31&f=2013&g=d&ignore=.csv lorsque les variables sont définies comme suit:

d1 = [3, 1, 2012] 
d2 = [2, 31, 2013] 
ticker = 'RELIANCE.NS' 
g = 'd' 
Questions connexes