Créer une base de données Pandas à partir d'une liste de dictionnaires

Luqman Khan 14 avril 2022
Créer une base de données Pandas à partir d'une liste de dictionnaires

Le dictionnaire est un conteneur Python compact et flexible qui stocke des cartes clé-valeur distinctes. Les dictionnaires sont écrits entre accolades ({}), qui comprennent des paires de mots-clés séparés par des virgules {} et {} séparant chaque clé de sa valeur.

Trois dictionnaires sont présentés ci-dessous, contenant un exemple de jeu de dés.

Prenons un exemple tiré d’un jeu de dés. Deux joueurs lancent leurs six dés et stockent les dés avec les joueurs correspondants dans ce cas.

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))

Nous avons créé un ensemble de données à partir d’une liste d’éléments contenant un dictionnaire car nous savons que le DataFrame prend une paire clé-valeur. C’est pourquoi c’est approprié avec un dictionnaire.

Production :

   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

Nous plaçons manuellement les dés dans le dernier exemple ; maintenant, nous allons utiliser une méthode randint définie dans la bibliothèque numpy. Nous avons créé deux listes vierges nommées harry et josh dans la ligne suivante. Ensuite, nous avons créé une boucle for, cette plage est définie de 0 à 6, en ajoutant des nombres aléatoires dans deux listes définies en tant qu’élément à l’aide de la méthode append(), regardez ci-dessous.

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)

Rappelez-vous, randint() prend la plage de un donné à n-1 ou par défaut zéro à n-1, c’est pourquoi nous avons défini la plage de 1-7.

sortir

   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

Maintenant, nous avons réduit les lignes de code à l’aide de la boucle for et ajouté l’ensemble du dictionnaire dans une liste, puis ajouté des index dans la liste nommée index correspondant aux tours du joueur et défini comme un index dans 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)

Production :

        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

Tous les exemples :

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)

Production :

   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