En esta entrada vamos a ver cómo se puede convertir fácilmente el contenido de un DataFrame en una lista, realizando el proceso tanto por filas como por columnas. Un truco con el que se puede cambiar el tipo de dato en función de nuestras necesidades.
En primer lugar, es necesario disponer de un DataFrame, a ser posible pequeño para ver mejor los resultados, por lo que vamos a crear una manualmente como ya hemos hecho en otras ocasiones. Para lo que se puede utilizar el siguiente código.
import pandas as pd
users = {'first_name': ['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'],
'last_name': ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'],
'age': [27, 41, 29, 29, 21, 33],
'gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']}
df = pd.DataFrame(users) first_name last_name age gender 0 Montgomery Humes 27 Male 1 Dagmar Elstow 41 Female 2 Reeba Wattisham 29 Female 3 Shalom Alen 29 Male 4 Broddy Keningham 21 Male 5 Aurelia Brechin 33 Female
Obtener una lista de Python a partir de un DataFrames de Pandas requiere realizar un par de pasos. Los DataFrames de Pandas no disponen de un método para obtener una lista con su contenido directamente, pero sí que disponen de un método para generar un array de NumPy. En los cuales existe un método para obtener una lista. Así es posible convertir un Dataframe en una lista por filas solamente con el siguiente código
df.to_numpy().tolist()
En el que simplemente se ha encadenado el método del DataFrame to_numpy(), con el que convierte un DataFrame en un objeto de NumPy, con el método de los array de NumPy tolist(), con el que se convierte un array de NumPy en una lista. Obteniendo el siguiente resultado.
[['Montgomery', 'Humes', 27, 'Male'], ['Dagmar', 'Elstow', 41, 'Female'], ['Reeba', 'Wattisham', 29, 'Female'], ['Shalom', 'Alen', 29, 'Male'], ['Broddy', 'Keningham', 21, 'Male'], ['Aurelia', 'Brechin', 33, 'Female']]
Si queremos convertir un DataFrame en una lista por columnas solamente hay que transformar el contenido. Algo que se puede conseguir simplemente aplicando el método transpose() al array de NumPy antes de convertir este en una lista. Así se puede conseguir el objetivo simplemente con la siguiente línea de código
df.to_numpy().transpose().tolist()
Lo que da como resultado una lista de listas por columnas.
[['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'], ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'], [27, 41, 29, 29, 21, 33], ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']]
Por otro lado, en el caso de convertir una lista en un DataFrame es algo más sencillo, ya que se puede hacer con el propio constructor. Lo que se muestra a continuación.
df_list = df.to_numpy().tolist() columns_names = df.columns.values pd.DataFrame(df_list, columns=columns_names)
En donde se guardan los datos en df_list y los nombres de las columnas en columns_names, para posteriormente, volver a crear un DataFrame.
Hoy hemos visto cómo se puede combinar las funciones de Pandas y NumPy para obtener una lista de listas a partir de un Dataframe. Un proceso que puede ser de utilidad en múltiples ocasiones cuando necesitemos disponer de los datos en otra estructura de datos.
"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…
Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…
Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…
Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…
Hay un momento muy concreto en la vida de casi todo análisis: el código que…
Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…
This website uses cookies.