Importar Datos Financieros (Bolsa de Valores) Desde La Web
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))