Revista Informática

Pandas: Cómo convertir listas en DataFrames

Publicado el 09 noviembre 2020 por Daniel Rodríguez @analyticslane
Pandas: Cómo convertir listas en DataFrames

Posiblemente una de las operaciones más habituales con Pandas sea convertir listas en DataFrames. Lo que se puede hacer con el constructor DataFrame de la librería.

Creación de DataFrames desde una lista de listas o de tuplas

Posiblemente la forma más sencilla para crear un DataFrame a partir de una lista es cuando tenemos una lista de listas, o una lista de tuplas. Por ejemplo, una lista como la siguiente en la que cada elemento es un registro de datos.

users = [[1, 'Josy', 'Clarae', 'Female'],
        [2, 'Vaughn', 'Halegarth', 'Male'],
        [3, 'Neale', 'Georgievski', 'Male'],
        [4, 'Teirtza', 'Teirtza', 'Female']]

En este caso se puede utilizar el constructor DataFrame para crear sin más problemas la un objeto DataFrame.

import pandas as pd

df = pd.DataFrame(users)
   0        1            2       3
0  1     Josy       Clarae  Female
1  2   Vaughn    Halegarth    Male
2  3    Neale  Georgievski    Male
3  4  Teirtza      Teirtza  Female

El procedimiento es exactamente el mismo mismo si en lugar de tener cada uno de los elementos tenemos una tupla en lugar de una lista.

Creación de un DataFrame con columnas e índices

Los nombres de columnas y los índices de la sección anterior son valores numéricos. El constructor de DataFrames de Pandas dispone de dos propiedades opcionales con las es posible asignar estos valores. Las propiedades columns y index que asignan respectivamente los índices y las columnas. Así, siguiendo con el ejemplo anterior se puede crear un DataFrame con nombres para los índices y las columnas.

df = pd.DataFrame(users,
                  columns=['id','first_name', 'last_name', 'gender'],
                  index=['a','b','c','d'])
   id first_name    last_name  gender
a   1       Josy       Clarae  Female
b   2     Vaughn    Halegarth    Male
c   3      Neale  Georgievski    Male
d   4    Teirtza      Teirtza  Female

Como se muestra en el ejemplo los índices de las filas no tiene que ser necesariamente un valor numérico.

Omitir valores en la creación de DataFrame

¿Qué pasa si queremos omitir un valor de cada uno de los registros? Se podría crear el DataFrame y posteriormente eliminar la columna no deseada. Pero es un proceso tedioso. También se puede utilizar el método from_records de DataFrame para realizar esta operación en un único paso. Un método con el que los objetos se construyen exactamente igual, pero en el que existe la propiedad exclude con la que se puede indicar el identificador de las columnas o columnas que se desea omitir. Por ejemplo, si se desea omitir el id del DataFrame creado anteriormente.

df = pd.DataFrame.from_records(users,
                               columns=['id','first_name', 'last_name', 'gender'],
                               index=['a','b','c','d'],
                               exclude=['id'])
  first_name    last_name  gender
a       Josy       Clarae  Female
b     Vaughn    Halegarth    Male
c      Neale  Georgievski    Male
d    Teirtza      Teirtza  Female

Creación del DataFrame desde múltiples listas

También es bastante habitual que los valores que tenemos para crear el DataFrame se encuentren en listas diferentes. Es decir, una lista para cada una de las columnas. En este caso es necesario convertir estas en una lista de tuplas. Algo que se puede conseguir fácilmente mediante el uso de la función zip. Así, se puede crear un DataFrame solamente con:

first_name = ['Josy', 'Vaughn', 'Neale', 'Teirtza']
last_name = ['Clarae', 'Halegarth', 'Georgievski', 'Teirtza']
gender = ['Female', 'Male', 'Male', 'Female']

user_list = list(zip(first_name, last_name, gender))

df = pd.DataFrame(user_list)
         0            1       2
0     Josy       Clarae  Female
1   Vaughn    Halegarth    Male
2    Neale  Georgievski    Male
3  Teirtza      Teirtza  Female

Conclusiones

En esta entrada hemos visto diferentes métodos para convertir listas en DataFrames con Pandas. Una operación básica pero que es importante conocer bien para tener trabajar de forma eficiente con la librería Pandas.


Volver a la Portada de Logo Paperblog