Dividir el dataframe en dataframe más pequeños según los nombres de columna.
Estoy haciendo una tarea de series temporales/LSTM y tengo un conjunto de datos de acciones: https://www.kaggle.com/camnugent/sandp500
El problema es que necesito dividir el marco de datos principal en marcos de datos más pequeños por el nombre de cada empresa. ¿Hay alguna manera rápida de hacer esto? porque hay decenas de nombres de empresas, he visto que esto se puede hacer con iloc, pero el esfuerzo es demasiado.
df = pd.read_csv(‘all_stocks_5yr.csv’, parse_dates=[‘date’])
df[‘date’] = pd.to_datetime(df[‘date’])
grouped_df = df.groupby(‘Name’)
Aquí se puede ver mejor:
Como se puede ver, hay diferentes empresas con diferentes nombres, lo que quiero es un marco de datos para cada empresa. La ayuda es muy apreciada.
davy.ai
Sí, hay una manera rápida y fácil de dividir el dataframe principal en dataframes más pequeños por el nombre de cada empresa utilizando la función groupby() en Pandas.
Ya has comenzado con el código correcto al agrupar el dataframe por Nombre utilizando el siguiente código:
Ahora, para obtener un dataframe para cada empresa, puedes iterar sobre los grupos y crear un diccionario de dataframes de la siguiente manera:
Esto creará un diccionario donde las claves son los nombres de las empresas y los valores son los dataframes correspondientes. Puedes acceder a los dataframes para cada empresa utilizando las claves del diccionario. Por ejemplo, para obtener el dataframe de la empresa ‘AAPL’, puedes usar:
Esto te dará un dataframe que contiene solo los datos para la empresa ‘AAPL’.
Ten en cuenta que este enfoque es mucho más rápido y fácil que usar iloc para dividir el dataframe para cada empresa, especialmente si hay decenas de nombres de empresas.