Conversión de un diccionario a un DataFrame en Python Pandas
Published on
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!
¿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.