Skip to content
Tutoriales
Pandas
Convertir un diccionario a un DataFrame en Python | Explicación de Pandas

Conversión de un diccionario a un DataFrame en Python Pandas

Como científico de datos, trabajar con datos es uno de los aspectos fundamentales del trabajo. Una de las estructuras de datos más comunes utilizadas en Python con este propósito es el diccionario. Un diccionario es una colección de pares clave-valor, donde cada clave es única. Pandas es una biblioteca popular de Python para el análisis de datos y proporciona capacidades poderosas para la manipulación de datos. Una de las tareas más comunes en el análisis de datos es la conversión de un diccionario en un DataFrame de Pandas. En esta publicación del blog, discutiremos el proceso de conversión de un diccionario a un DataFrame en Pandas.

¿Quieres crear visualizaciones de datos rápidamente en Python?

PyGWalker es un proyecto de Python de código abierto que puede ayudar a acelerar el flujo de trabajo de análisis y visualización de datos directamente dentro de entornos basados en Jupyter Notebook.

PyGWalker (opens in a new tab) convierte su DataFrame de Pandas (o DataFrame de Polars) en una interfaz de usuario visual donde puede arrastrar y soltar variables para crear gráficos fácilmente. Simplemente use el siguiente código:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Puede ejecutar PyGWalker ahora mismo con estas notebooks en línea:

¡Y no olvides darnos una ⭐️ en GitHub!

Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Dale una ⭐️ a PyGWalker en GitHub (opens in a new tab)
Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)

¿Qué es un diccionario?

En Python, un diccionario es una colección de pares clave-valor. Cada clave es única y corresponde a un valor. Los diccionarios se utilizan para almacenar y manipular datos a los que se puede acceder mediante claves. Los diccionarios en Python se definen utilizando llaves {} y pueden ser anidados.

¿Qué es un DataFrame?

Un DataFrame es una estructura de datos en forma de tabla bidimensional en Pandas. Está compuesto por filas y columnas, donde cada columna puede contener datos de un tipo diferente. Los DataFrames son una excelente manera de analizar y manipular datos, y Pandas proporciona una amplia variedad de funciones para manipular datos en un DataFrame.

Conversión de un diccionario a un DataFrame

Pandas proporciona un método simple para convertir un diccionario a un DataFrame utilizando la función pd.DataFrame.from_dict(). La función from_dict() toma un diccionario como entrada y devuelve un DataFrame. El comportamiento predeterminado de esta función asume que las claves en el diccionario corresponden a los nombres de las columnas y los valores corresponden a los datos de las filas.

Consideremos un ejemplo en el que tenemos un diccionario que contiene información sobre estudiantes, sus calificaciones y sus materias:

student_data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87, 92], 'subject': ['Math', 'English', 'Science']}

Para convertir este diccionario a un DataFrame, simplemente utilizamos la función from_dict():

import pandas as pd
 
df = pd.DataFrame.from_dict(student_data)
print(df)

La salida de este fragmento de código se verá así:

       name  grade  subject
0     Alice     95     Math
1       Bob     87  English
2  Charlie     92  Science

Como podemos ver, las claves del diccionario (name, grade y subject) se utilizaron como nombres de columna del DataFrame resultante, y los valores correspondientes se utilizaron como datos de fila.

Uso del parámetro orient

En casos en los que el diccionario tenga una estructura diferente, podemos utilizar el parámetro orient para especificar cómo se debe crear el DataFrame. El parámetro orient acepta varios valores, como index, columns, split y values. El valor predeterminado es columns. Consideremos un ejemplo en el que tenemos un diccionario que contiene listas de diferentes longitudes:

data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87], 'subject': ['Math', 'English', 'Science']}

Si intentamos convertir este diccionario a un DataFrame utilizando el comportamiento predeterminado, obtendremos un ValueError:

df = pd.DataFrame.from_dict(data)
ValueError: arrays must all be same length

Para evitar este error, podemos utilizar el parámetro orient con el valor index para crear un DataFrame donde las claves del diccionario se convierten en los índices de las filas y los valores correspondientes se convierten en los datos de las filas:

df = pd.DataFrame.from_dict(data, orient='index')
print(df)

La salida de este fragmento de código se verá así:

            0     1        2
name    Alice   Bob  Charlie
grade      95    87     None
subject  Math  English  Science

Uso de una lista de diccionarios

Otra manera de crear un DataFrame a partir de un diccionario es utilizando una lista de diccionarios. En este escenario, cada diccionario en la lista corresponderá a una fila en el DataFrame resultante, y las llaves en el diccionario corresponderán a los nombres de las columnas. Consideremos un ejemplo en el que tenemos una lista de diccionarios que representan estudiantes y sus calificaciones:

student_data = [{'name': 'Alice', 'grade': 95, 'subject': 'Math'},
                {'name': 'Bob', 'grade': 87, 'subject': 'English'},
                {'name': 'Charlie', 'grade': 92, 'subject': 'Science'}]

Para convertir esta lista de diccionarios a un DataFrame, simplemente utilizamos la función pd.DataFrame():

df = pd.DataFrame(student_data)
print(df)

La salida de este fragmento de código será la siguiente:

   name  grade  subject
0  Alice     95     Math
1    Bob     87  English
2  Charlie   92  Science

Como podemos ver, el DataFrame resultante es igual al creado a partir del diccionario en el ejemplo anterior.

Utilizando las Llaves como Columnas

Por defecto, la función from_dict() utiliza las llaves del diccionario como nombres de las columnas en el DataFrame resultante. En casos en los que queremos utilizar un conjunto diferente de llaves, podemos utilizar el parámetro columns. Por ejemplo, si tenemos un diccionario con las llaves a, b y c, pero queremos utilizar x, y y z como nombres de columna, podemos hacer lo siguiente:

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame.from_dict(data, columns=['x', 'y', 'z'])
print(df)

La salida de este fragmento de código será la siguiente:

   x  y  z
0  1  4  7
1  2  5  8
2  3  6  9

Utilizando una Orientación Ajustada

La función from_dict() también puede ser utilizada para crear un DataFrame a partir de un diccionario con una orientación ajustada. Una orientación ajustada significa que cada llave del diccionario contiene un diccionario con el mismo conjunto de llaves. Consideremos el siguiente ejemplo:

data = {'a': {'x': 1, 'y': 2, 'z': 3}, 'b': {'x': 4, 'y': 5, 'z': 6}, 'c': {'x': 7, 'y': 8, 'z': 9}}

Para crear un DataFrame a partir de este diccionario con una orientación ajustada, podemos utilizar el parámetro orient y establecer su valor en 'index':

df = pd.DataFrame.from_dict(data, orient='index')
print(df)

La salida de este fragmento de código será la siguiente:

   x  y  z
a  1  2  3
b  4  5  6
c  7  8  9

Nombres de Índice y Columnas

Cuando convertimos un diccionario a un DataFrame, también podemos especificar los nombres de índice y columnas. Consideremos el siguiente ejemplo:

data = {'name': ['Alice', 'Bob', 'Charlie'], 'grade': [95, 87, 92], 'subject': ['Math', 'English', 'Science']}
 
df = pd.DataFrame.from_dict(data, orient='columns', columns=['name', 'subject', 'grade'], index=['student1', 'student2', 'student3'])
print(df)

La salida de este fragmento de código será la siguiente:

         name  subject  grade
student1  Alice  Math     95
student2  Bob  English   87
student3  Charlie  Science   92

Como podemos ver en este ejemplo, podemos especificar los nombres de las columnas utilizando el parámetro columns y los nombres de índice utilizando el parámetro index.

Conclusión

En esta publicación de blog, aprendimos cómo convertir fácilmente un diccionario a un DataFrame utilizando la función pd.DataFrame.from_dict() en Pandas. También aprendimos cómo especificar la orientación del diccionario y personalizar los nombres de las columnas e índices. La capacidad de convertir fácilmente diccionarios en marcos de datos hace que la manipulación de datos en Python sea más sencilla, lo que permite a los científicos de datos realizar varias tareas de análisis de datos como manipulación de datos y aprendizaje automático que pueden ser útiles en su profesión. Las habilidades aprendidas en la manipulación de diccionarios en marcos de datos también se pueden transferir al lenguaje R, otra herramienta popular en ciencia de datos y el campo general de análisis y manipulación de datos en Python.