2016-06-13 12 views
0

Die Skripte funktioniert gut, wenn ich etwa 200 bis 300 Aktien habe, aber meine Firmenliste hat rund 6000 Symbole.Pause URL Anfrage Downloads

  1. Gibt es einen Weg, wie ich Datenstücke herunterladen kann, sagen wir wie 200 Aktien gleichzeitig, pausiere für eine Weile und fahre dann mit dem Download fort?
  2. Der Export ist eine Aktie zu einer Zeit; Wie schreibe ich 200 auf einmal und füge den nächsten Stapel an den ersten Stapel (für die CSV)?

Antwort

0

nach 200 Downloads zu unterbrechen, könnten Sie - auch wenn Sie pandas_datareader:

import time 
for i, s in enumerate(stocklist): 
    if i % 200 == 0: 
     time.sleep(5) # in seconds 

Um alle Daten in einer einzigen Datei (IIUC) zu speichern:

stocks = pd.DataFrame() # to collect all results 

In jedem Iteration:

stocks = pd.concat([stocks, pd.DataFrame(data, columns=columns)) 

Schließlich:

stocks.to_csv(path, index=False) 
1

Verwenden Sie hierzu python_datareader.

In [1]: import pandas_datareader.data as web 

In [2]: import datetime 

In [3]: start = datetime.datetime(2010, 1, 1) 

In [4]: end = datetime.datetime(2013, 1, 27) 

In [5]: f = web.DataReader("F", 'yahoo', start, end) 

In [6]: f.ix['2010-01-04'] 
Out[6]: 
Open    10.170000 
High    10.280000 
Low    10.050000 
Close    10.280000 
Volume  60855800.000000 
Adj Close   9.151094 
Name: 2010-01-04 00:00:00, dtype: float64 
+0

Vielen Dank für Ihre Antwort, es Oden nicht alle Header, die ich brauche .. wie div, Markt Cap .. – showri

+1

Python_Datareader erkunden, könnte es nur die Daten, die Sie brauchen. – Merlin

+1

@showri, unterschätze Pandas nicht! Suche nach dem 'MarketCap' Wort in der' pandas/io/tests/test_data.py' Datei – MaxU

5

Als @Merlin haben Sie empfohlen - bei pandas_datareader Modul genaueres Hinsehen - Sie eine Menge mit diesem Tool zu tun. Hier ist ein kleines Beispiel:

import csv 
import pandas_datareader.data as data 
from pandas_datareader.yahoo.quotes import _yahoo_codes 

stocklist = ['aapl','goog','fb','amzn','COP'] 

#http://www.jarloo.com/yahoo_finance/ 
#https://greenido.wordpress.com/2009/12/22/yahoo-finance-hidden-api/ 
_yahoo_codes.update({'Market Cap': 'j1'}) 
_yahoo_codes.update({'Div Yield': 'y'}) 
_yahoo_codes.update({'Bid': 'b'}) 
_yahoo_codes.update({'Ask': 'a'}) 
_yahoo_codes.update({'Prev Close': 'p'}) 
_yahoo_codes.update({'Open': 'o'}) 
_yahoo_codes.update({'1 yr Target Price': 't8'}) 
_yahoo_codes.update({'Earnings/Share': 'e'}) 
_yahoo_codes.update({"Day’s Range": 'm'}) 
_yahoo_codes.update({'52-week Range': 'w'}) 
_yahoo_codes.update({'Volume': 'v'}) 
_yahoo_codes.update({'Avg Daily Volume': 'a2'}) 
_yahoo_codes.update({'EPS Est Current Year': 'e7'}) 
_yahoo_codes.update({'EPS Est Next Quarter': 'e9'}) 

data.get_quote_yahoo(stocklist).to_csv('test.csv', index=False, quoting=csv.QUOTE_NONNUMERIC) 

Ausgang: i absichtlich die Ergebnismenge umgesetzt habe, weil es zu viele Spalten sind ihnen zu zeigen, hier

In [2]: data.get_quote_yahoo(stocklist).transpose() 
Out[2]: 
           aapl    goog     fb     amzn    COP 
1 yr Target Price    124.93   924.83    142.87    800.92    51.23 
52-week Range   89.47 - 132.97 515.18 - 789.87 72.000 - 121.080 422.6400 - 731.5000 31.0500 - 64.1300 
Ask       97.61   718.75    114.58    716.73    44.04 
Avg Daily Volume   3.81601e+07  1.75567e+06  2.56467e+07   3.94018e+06  8.94779e+06 
Bid        97.6   718.57    114.57    716.65    44.03 
Day’s Range   97.10 - 99.12 716.51 - 725.44 113.310 - 115.480 711.1600 - 721.9900 43.8000 - 44.9600 
Div Yield      2.31    N/A    N/A     N/A    4.45 
EPS Est Current Year   8.28    33.6    3.55     5.39    -2.26 
EPS Est Next Quarter   1.66    8.38    0.87     0.96    -0.48 
Earnings/Share     8.98   24.58    1.635    2.426    -4.979 
Market Cap     534.65B   493.46B   327.71B    338.17B    54.53B 
Open       98.6   716.51    115    713.37    43.96 
PE        10.87   29.25    70.074    295.437    N/A 
Prev Close      98.83   719.41    116.62    717.91    44.51 
Volume     3.07086e+07   868366  2.70182e+07   2.42218e+06  5.20412e+06 
change_pct     -1.23%   -0.09%   -1.757%    -0.1644%   -1.0782% 
last       97.61   718.75   114.571    716.73   44.0301 
short_ratio      1.18    1.41    0.81     1.29    1.88 
time       3:15pm   3:15pm    3:15pm    3:15pm    3:15pm 

Wenn Sie mehr Felder (Codes für Yahoo benötigen Finance API) können Sie die folgenden Links überprüfen möchten:

http://www.jarloo.com/yahoo_finance/

https://greenido.wordpress.com/2009/12/22/yahoo-finance-hidden-api/

+0

Können Sie historische Split-Daten und/oder Verdienstdaten erhalten. Die Splits sind in historischen Dividends Daten auf der Website vergraben. – Merlin

+0

@Merlin, ja, ich denke, Sie können historische Daten erhalten - sehen Sie sich '.../site-packages/pandas_datareader/base.py' -' class _BaseReader' an. Ich verstehe nicht, was ist/sind 'Ergebnisdaten' ... – MaxU

+1

Ich denke, get_quote_yahoo ist derzeit kaputt. – Ahmed