Importar Datos Financieros (Bolsa de Valores) Desde La Web

2 minute read

En este ejercicio usaremos el ‘pandas_datareader’ para importar datos financieros del stock de la companía Apple (AAPL) directamente a un ‘Data Frame’ y también trazaremos un gráfico linear para poder observar la tendencia en el precio del stock.

El uso de ‘pandas_datareader’ es muy conveniente cuando queremos crear un ‘Data Frame’ que contiene la información financiera de algun ‘stock’.

El proceso es relativamente fácil y no requiere de mucho código en Python. La información finaciera esta disponible de varias fuentes tales como: GoogleFinance, Yahoo!, la Reserva Federal de los EEUU (Federal Reserve), el Bank Mundial, etc.

# Importar los módulos requeridos
import pandas as pd
import numpy as np
import pandas_datareader as pdr 
from datetime import datetime
#import datetime
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
# Definir el período de tiempo que queremos analizar el stock (un año, en este caso)

fecha_final = datetime.now()
print (fecha_final)

fecha_inicial = datetime(fecha_final.year -1, fecha_final.month, fecha_final.day)
print (fecha_inicial)
2018-10-23 21:29:25.592488
2017-10-23 00:00:00
"""
Usar pandas_datareader para importar datos y crear un nuevo Data Frame llamado 'datos_stock'
pandas_datareader requiere cuatro parámetros:
   1 - el 'tick' o código del stock, en este caso 'AAPL' por Apple
   2 - la fuente de donde vienen los datos, en este caso 'yahoo'
   3 - la fecha de inicio que declaramos arriba
   4 - la fecha de finalización, declarada ariiba también

"""

datos_stock = pdr.DataReader('AAPL', 'yahoo', start, end)

# Imprimir la información básica de nuestro Data Frame usando el método .info()

datos_stock.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 253 entries, 2017-10-23 to 2018-10-23
Data columns (total 6 columns):
Open         253 non-null float64
High         253 non-null float64
Low          253 non-null float64
Close        253 non-null float64
Adj Close    253 non-null float64
Volume       253 non-null int64
dtypes: float64(5), int64(1)
memory usage: 13.8 KB
# Imprimir las primeras 5 filas del Data Frame (la "cabeza") usando el método .head()

datos_stock.head()
Open High Low Close Adj Close Volume
Date
2017-10-23 156.889999 157.690002 155.500000 156.169998 153.843857 21984300
2017-10-24 156.289993 157.419998 156.199997 157.100006 154.760010 17757200
2017-10-25 156.910004 157.550003 155.270004 156.410004 154.080307 21207100
2017-10-26 157.229996 157.830002 156.779999 157.410004 155.065399 17000500
2017-10-27 159.289993 163.600006 158.699997 163.050003 160.621384 44454200
# Imprimir las últimas 5 filas del Data Frame (la 'cola') usando el método .tail() 
datos_stock.tail()
Open High Low Close Adj Close Volume
Date
2018-10-17 222.300003 222.639999 219.339996 221.190002 221.190002 22885400
2018-10-18 217.860001 219.740005 213.000000 216.020004 216.020004 32581300
2018-10-19 218.059998 221.259995 217.429993 219.309998 219.309998 33078700
2018-10-22 219.789993 223.360001 218.940002 220.649994 220.649994 28792100
2018-10-23 215.830002 223.250000 214.699997 222.729996 222.729996 38616200
# Trazar un gráfico del precio del stock en este año. El precio del stock se encuentra la columna 'Adj Close'
# usando el .plot() método del módulo matplotlib

datos_stock['Adj Close'].plot(legend=True, figsize=(10,4))

alt