es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué recibo el mensaje de “dataframe vacío” al usar concat?

Estoy tratando de ver el precio predicho para MSFT y me refiero a un libro titulado ‘Machine learning and data science blueprints for finance’. Proporciona un código de ejemplo como un estudio de caso para determinar el precio futuro de las acciones de MSFT. El código está abajo. Sin embargo, cuando comienzo a depurarlo, la terminal muestra el siguiente mensaje:

Empty DataFrame
Columns: [MSFT_pred, GOOGL, DEXJPUS, DEXUSUK, SP500, DJIA, VIXCLS, MSFT_DT, MSFT_3DT, 
MSFT_6DT, MSFT_12DT]

El código está abajo:

from pandas_datareader import data
import yfinance as yf
import pandas_datareader as web
import numpy as np
import pandas as pd

return_period = 5

stk_tickers = ['MSFT','AAPL','GOOGL']

stk_data = yf.download(stk_tickers, start = '2012-01-01', end='2017-01-01')


ccy_tickers = ['DEXJPUS','DEXUSUK']
ccy_data = web.DataReader(ccy_tickers,'fred')


idx_tickers = ['SP500','DJIA','VIXCLS']
idx_data = web.DataReader(idx_tickers,'fred')


Y = np.log(stk_data.loc[:, ('Adj Close', 'MSFT')]).diff(return_period).shift(-                
return_period)
Y.name = Y.name[-1]+'pred';

X1 = np.log(stk_data.loc[:, ('Adj Close', ('GOOGL', 'IBM'))]).diff(return_period)
X1.columns = X1.columns.droplevel()
X2 = np.log(ccy_data).diff(return_period)
X3 = np.log(idx_data).diff(return_period)

X4 = pd.concat([np.log(stk_data.loc[:, ('Adj Close', 'MSFT')]).diff(i) for i in     
[return_period, return_period*3, return_period*6, return_period*12]],     
 axis=1).dropna()
X4.columns = ['MSFT_DT', 'MSFT_3DT', 'MSFT_6DT', 'MSFT_12DT']

X = pd.concat([X1, X2, X3, X4], axis=1)


dataset = pd.concat([Y, X], axis=1).dropna().iloc[::return_period, :]
Y = dataset.loc[:, Y.name]
X = dataset.loc[:, X.columns]
print(dataset)

Sé que los datos están presentes porque cuando imprimo ‘X’ o ‘Y’ aparecen con ellos. Debe ser un problema con concat.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el código proporcionado, parece que el problema podría estar en la concatenación de los dataframes. Específicamente, el dataframe X4 se está concatenando con X utilizando pd.concat, y luego se aplica la función dropna() a esa concatenación. Sin embargo, es posible que X4 tenga algunos valores faltantes que no se están manejar correctamente.

    Una forma de probar esta hipótesis es imprimir X4 y verificar si hay valores faltantes en el dataframe. Si los hay, podrían ser la causa del problema con la concatenación.

    Otra opción sería probar quitar la función dropna() de la concatenación de X y X4 y ver si eso resuelve el problema. Esto mantendría cualquier valor faltante presente en el dataframe y evitaría que se imprima un dataframe vacío.

    En general, es difícil determinar la causa exacta del problema sin más información o pruebas adicionales, pero estas son algunas posibles vías a explorar.

Comments are closed.