<jupyter_start><jupyter_text>Extraer los datos de Yahoo Finance Tomamos 50 acciones en total, de diferentes industrias:<jupyter_code>stocks = ['COP','AMT','LIN','LMT','AMZN','WMT','JNJ','VTI','MSFT','GOOG','XOM','CCI','BHP.AX','UNP',
'BABA','NSRGY','RHHBY','VOO','AAPL','FB','CVX','PLD','RIO.L','HON','HD','PG','UNH','BRK-A','V','0700.HK',
'RDSA.AS','0688.HK','AI.PA','RTX','MC.PA','KO','PFE','JPM','005930.KS','VZ','RELIANCE.NS','DLR','2010.SR',
'UPS','7203.T','PEP','MRK','1398.HK','MA','T']
len(stocks)
df_o = yf.download(stocks, start='2015-01-01', end='2020-04-30').Open
df_o.shape
df_c = yf.download(stocks, start='2015-01-01', end='2020-04-30').Close
df_c.shape
df_c.count().describe()<jupyter_output><empty_output><jupyter_text>Como la mayoría tienen 1340 días informados, tomaremos solo eso 1340 días.<jupyter_code>base = df_c['AAPL'].dropna().to_frame()
for i in range(0,50):
    base = base.join(df_c.iloc[:,i].to_frame(), lsuffix='_caller', rsuffix='_other')
base = base.drop(columns=['AAPL_caller'])
base = base.rename(columns={"AAPL_other": "AAPL"})
base
base.count().describe()
base = base.fillna(method='ffill')
base = base.fillna(method='bfill')
base
base.count().describe()<jupyter_output><empty_output><jupyter_text>Ya no hay NA's La función queda como sigue:<jupyter_code>def extraer_datos_yahoo(stocks, start='2015-01-01', end='2020-04-30'):
    '''
    Descarga la información de precios de acciones al cierre para un periodo determinado
    Inputs:
        stocks - lista de acciones a descargar, las 50 especificadas previamente
        'COP','AMT','LIN','LMT','AMZN','WMT','JNJ','VTI','MSFT','GOOG','XOM','CCI','BHP.AX','UNP',
        'BABA','NSRGY','RHHBY','VOO','AAPL','FB','CVX','PLD','RIO.L','HON','HD','PG','UNH','BRK-A','V','0700.HK',
        'RDSA.AS','0688.HK','AI.PA','RTX','MC.PA','KO','PFE','JPM','005930.KS','VZ','RELIANCE.NS','DLR','2010.SR',
        'UPS','7203.T','PEP','MRK','1398.HK','MA','T'
        start - fecha inicio a partir de la cual se requieren los precios de las acciones, formato 'YYYY-MM-DD'
        end - fecha final hasta donde se requieren los precios de las acciones, formato 'YYYY-MM-DD'
    Output:
        datos - dataframe con 50 columnas, una por acción, tantos renglones como días hábiles del periodo
        solicitado (1340 en el caso de las fechas default), cada celda es el precio de una acción al cierre, 
        de un día específico
    '''
    df_c = yf.download(stocks, start, end).Close
    base = df_c['AAPL'].dropna().to_frame()
    for i in range(0,50):
        base = base.join(df_c.iloc[:,i].to_frame(), lsuffix='_caller', rsuffix='_other')
    base = base.drop(columns=['AAPL_caller'])
    base = base.rename(columns={"AAPL_other": "AAPL"})
    base = base.fillna(method='ffill')
    base = base.fillna(method='bfill')
    return base
datos = extraer_datos_yahoo(stocks)
datos<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.2109456182888812, 'fraction_numerical': 0.042951160374090754, 'mean_word_length': 5.460850111856823, 'pattern_counts': {'":': 2, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '329866', 'license': 'RSA-MD', 'n_tokens_mistral': 1240, 'n_tokens_neox': 1149, 'n_words': 200, 'path': 'notebooks/Programacion/1ab_extraer_datos_stock.ipynb', 'repo_name': 'izmfc/MNO_finalproject', 'size': '2887'}