tutorial panda guide examples pandas finance yahoo-finance google-finance stockquotes

guide - pandas python tutorial



Descargar los precios de las acciones de la historia automáticamente de las finanzas de yahoo en python (4)

Cuando trabajes con tales series temporales en Python, los pandas son indispensables. Y esta es la buena noticia: viene con un descargador de datos históricos para Yahoo: pandas.io.data.DataReader .

from pandas.io.data import DataReader from datetime import datetime ibm = DataReader(''IBM'', ''yahoo'', datetime(2000, 1, 1), datetime(2012, 1, 1)) print(ibm[''Adj Close''])

Aquí hay un ejemplo de la documentación de pandas .

Actualización para pandas> = 0.19:

El módulo pandas.io.data se ha eliminado de los pandas>=0.19 adelante. En su lugar, debe usar el paquete pandas-datareader separado. Instalar con:

pip install pandas-datareader

Y luego puedes hacer esto en Python:

import pandas_datareader as pdr from datetime import datetime ibm = pdr.get_data_yahoo(symbols=''IBM'', start=datetime(2000, 1, 1), end=datetime(2012, 1, 1)) print(ibm[''Adj Close''])

También se admite la descarga de Google Finance.

Hay más en la documentación de pandas-datareader .

¿Hay alguna manera de descargar automáticamente los precios históricos de las acciones de yahoo finance o google finance (formato csv)? Preferiblemente en Python.


Extendiendo @Def_Os''s respuesta de @Def_Os''s con una demostración real ...

Como @Def_Os ya ha dicho, usar Pandas Datareader hace que esta tarea sea realmente divertida

In [12]: from pandas_datareader import data

extracción de todos los datos históricos disponibles para AAPL partir de 1980-01-01

#In [13]: aapl = data.DataReader(''AAPL'', ''yahoo'', ''1980-01-01'') # yahoo api is inconsistent for getting historical data, please use google instead. In [13]: aapl = data.DataReader(''AAPL'', ''google'', ''1980-01-01'')

primeras 5 filas

In [14]: aapl.head() Out[14]: Open High Low Close Volume Adj Close Date 1980-12-12 28.750000 28.875000 28.750 28.750 117258400 0.431358 1980-12-15 27.375001 27.375001 27.250 27.250 43971200 0.408852 1980-12-16 25.375000 25.375000 25.250 25.250 26432000 0.378845 1980-12-17 25.875000 25.999999 25.875 25.875 21610400 0.388222 1980-12-18 26.625000 26.750000 26.625 26.625 18362400 0.399475

últimas 5 filas

In [15]: aapl.tail() Out[15]: Open High Low Close Volume Adj Close Date 2016-06-07 99.250000 99.870003 98.959999 99.029999 22366400 99.029999 2016-06-08 99.019997 99.559998 98.680000 98.940002 20812700 98.940002 2016-06-09 98.500000 99.989998 98.459999 99.650002 26419600 99.650002 2016-06-10 98.529999 99.349998 98.480003 98.830002 31462100 98.830002 2016-06-13 98.690002 99.120003 97.099998 97.339996 37612900 97.339996

guardar todos los datos como archivo CSV

In [16]: aapl.to_csv(''d:/temp/aapl_data.csv'')

d: /temp/aapl_data.csv - 5 primeras filas

Date,Open,High,Low,Close,Volume,Adj Close 1980-12-12,28.75,28.875,28.75,28.75,117258400,0.431358 1980-12-15,27.375001,27.375001,27.25,27.25,43971200,0.408852 1980-12-16,25.375,25.375,25.25,25.25,26432000,0.378845 1980-12-17,25.875,25.999999,25.875,25.875,21610400,0.38822199999999996 1980-12-18,26.625,26.75,26.625,26.625,18362400,0.399475 ...


Respuesta corta: Sí. Utilice el urllib de Python para extraer las páginas de datos históricos de las existencias que desee. Vete con Yahoo! Financiar; Google es a la vez menos confiable, tiene menos cobertura de datos y es más restrictiva en cómo puede usarlo una vez que lo tiene. Además, creo que Google le prohíbe específicamente robar los datos en sus ToS.

Respuesta más larga: esta es la secuencia de comandos que uso para extraer todos los datos históricos de una empresa en particular. Tira de la página de datos históricos para un símbolo de cotización en particular, luego la guarda en un archivo csv nombrado por ese símbolo. Tendrás que proporcionar tu propia lista de símbolos de cotización que deseas extraer.

import urllib base_url = "http://ichart.finance.yahoo.com/table.csv?s=" def make_url(ticker_symbol): return base_url + ticker_symbol output_path = "C:/path/to/output/directory" def make_filename(ticker_symbol, directory="S&P"): return output_path + "/" + directory + "/" + ticker_symbol + ".csv" def pull_historical_data(ticker_symbol, directory="S&P"): try: urllib.urlretrieve(make_url(ticker_symbol), make_filename(ticker_symbol, directory)) except urllib.ContentTooShortError as e: outfile = open(make_filename(ticker_symbol, directory), "w") outfile.write(e.content) outfile.close()


Ya hay una biblioteca en Python llamada yahoo_finance, por lo que deberá descargar la biblioteca primero con la siguiente línea de comando:

sudo pip install yahoo_finance

Luego, una vez que haya instalado la biblioteca yahoo_finance, aquí hay un código de muestra que descargará los datos que necesita de Yahoo Finance:

#!/usr/bin/python import yahoo_finance import pandas as pd symbol = yahoo_finance.Share("GOOG") google_data = symbol.get_historical("1999-01-01", "2016-06-30") google_df = pd.DataFrame(google_data) # Output data into CSV google_df.to_csv("/home/username/google_stock_data.csv")

Esto debería hacerlo. Déjame saber si funciona.