Cree un dataframe de Pandas a partir de una lista de diccionarios

Luqman Khan 14 abril 2022
Cree un dataframe de Pandas a partir de una lista de diccionarios

El diccionario es un contenedor Python compacto y flexible que almacena mapas clave-valor separados. Los diccionarios se escriben entre corchetes ({}), que incluyen pares de palabras clave separadas por comas (,) y : separan cada clave de su valor.

A continuación se muestran tres diccionarios que contienen un ejemplo de un juego de dados.

Tomemos un ejemplo de un juego de dados. En este caso, dos jugadores tiran sus seis dados y almacenan los dados con los jugadores correspondientes.

import pandas as pd
from numpy.random import randint

# create datset from multiple dictionaries
dataset_list = [
    {"Harry": 1, "Josh": 3, "dices": "first dice"},
    {"Harry": 5, "Josh": 1, "dices": "second dice"},
    {"Harry": 6, "Josh": 2, "dices": "third dice"},
    {"Harry": 2, "Josh": 3, "dices": "fourth dice"},
    {"Harry": 6, "Josh": 6, "dices": "fifth dice"},
    {"Harry": 4, "Josh": 3, "dices": "sixth dice"},
]

df = pd.DataFrame(dataset_list)
print(df)
print()
harry = []
josh = []
for i in range(6):
    harry.append(randint(1, 7))
    josh.append(randint(1, 7))

Creamos un conjunto de datos a partir de una lista de elementos que contienen un diccionario, ya que sabemos que el Marco de datos toma un par clave-valor. Es por eso que esto es apropiado con un diccionario.

Producción :

   Harry  Josh        dices
0      1     3   first dice
1      5     1  second dice
2      6     2   third dice
3      2     3  fourth dice
4      6     6   fifth dice
5      4     3   sixth dice

Colocamos dados manualmente en el último ejemplo; ahora, usaremos un método randint definido en la biblioteca numpy. Creamos dos listas en blanco llamadas harry y josh en la siguiente línea. A continuación, creamos un bucle for, este rango se define de 0 a 6, agregando números aleatorios en dos listas definidas como un elemento usando el método append(), mira a continuación.

import pandas as pd
from numpy.random import randint

print()
harry = []
josh = []
for i in range(6):
    harry.append(randint(1, 7))
    josh.append(randint(1, 7))
# create datset from multiple dictionaries
dataset_list = [
    {"Harry": harry[0], "Josh": josh[0], "dices": "first dice"},
    {"Harry": harry[1], "Josh": josh[1], "dices": "second dice"},
    {"Harry": harry[2], "Josh": josh[2], "dices": "third dice"},
    {"Harry": harry[3], "Josh": josh[3], "dices": "fourth dice"},
    {"Harry": harry[4], "Josh": josh[4], "dices": "fifth dice"},
    {"Harry": harry[5], "Josh": josh[5], "dices": "sixth dice"},
]

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

Recuerde, randint() toma el rango de uno dado a n-1 o por defecto de cero a n-1, por eso definimos el rango de 1-7.

producción

   Harry  Josh        dices
0      4     1   first dice
1      4     2  second dice
2      3     4   third dice
3      1     1  fourth dice
4      4     5   fifth dice
5      4     4   sixth dice

Ahora redujimos las líneas de código con la ayuda del bucle for y añadimos todo el diccionario en una lista, más índices añadidos en la lista llamada índice se corresponden con los turnos del jugador y se configuran como un índice en DataFrame.

import pandas as pd
from numpy.random import randint

dataset_list = []
index = []
for i in range(1, 7):
    dataset_list.append({"Harry": randint(1, 7), "Josh": randint(1, 7)})
    index.append("dice " + str(i))
print("\nAfter reducing the code\n")
df = pd.DataFrame(dataset_list, index=index)

print(df)

Producción :

        Harry  Josh
dice 1      2     4
dice 2      2     3
dice 3      6     5
dice 4      5     2
dice 5      4     2
dice 6      1     1

Todos los ejemplos:

import pandas as pd
from numpy.random import randint

# create datset from multiple dictionaries
dataset_list = [
    {"Harry": 1, "Josh": 3, "dices": "first dice"},
    {"Harry": 5, "Josh": 1, "dices": "second dice"},
    {"Harry": 6, "Josh": 2, "dices": "third dice"},
    {"Harry": 2, "Josh": 3, "dices": "fourth dice"},
    {"Harry": 6, "Josh": 6, "dices": "fifth dice"},
    {"Harry": 4, "Josh": 3, "dices": "sixth dice"},
]

df = pd.DataFrame(dataset_list)
print(df)
print()
harry = []
josh = []
for i in range(6):
    harry.append(randint(1, 7))
    josh.append(randint(1, 7))

# create datset from multiple dictionaries
dataset_list = [
    {"Harry": harry[0], "Josh": josh[0], "dices": "first dice"},
    {"Harry": harry[1], "Josh": josh[1], "dices": "second dice"},
    {"Harry": harry[2], "Josh": josh[2], "dices": "third dice"},
    {"Harry": harry[3], "Josh": josh[3], "dices": "fourth dice"},
    {"Harry": harry[4], "Josh": josh[4], "dices": "fifth dice"},
    {"Harry": harry[5], "Josh": josh[5], "dices": "sixth dice"},
]

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

dataset_list = []
index = []
for i in range(1, 7):
    dataset_list.append({"Harry": randint(1, 7), "Josh": randint(1, 7)})
    index.append("dice " + str(i))
print("\nAfter reducing the code\n")
df = pd.DataFrame(dataset_list, index=index)

print(df)

Producción :

   Harry  Josh        dices
0      1     3   first dice
1      5     1  second dice
2      6     2   third dice
3      2     3  fourth dice
4      6     6   fifth dice
5      4     3   sixth dice

   Harry  Josh        dices
0      4     1   first dice
1      4     2  second dice
2      3     4   third dice
3      1     1  fourth dice
4      4     5   fifth dice
5      4     4   sixth dice

After reducing the code

        Harry  Josh
dice 1      2     4
dice 2      2     3
dice 3      6     5
dice 4      5     2
dice 5      4     2
dice 6      1     1