Convertir la DataFrame Pandas en dictionnaire
-
Pandas DataFrame vers un dictionnaire en utilisant la fonction
to_dict()
-
Pandas DataFrame to Dictionary avec des valeurs sous forme de liste ou de
Series
- Pandas DataFrame à la liste de dictionnaires
- Pandas Dataframe au Dictionnaire par lignes
-
Dataframe vers le dictionnaire avec une colonne comme
key
-
Pandas DataFrame vers le dictionnaire en utilisant les fonctions
dict()
etzip()
Ce tutoriel présente la manière de convertir une Pandas DataFrame en dictionnaire avec les éléments de la colonne d’index comme clé et les éléments correspondants des autres colonnes comme valeur. Nous utiliserons la DataFrame suivante dans l’article.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
print(df)
Production :
Name Age Course
0 Jay 16 BBA
1 Jack 19 BTech
2 Mark 18 BSc
Pandas DataFrame vers un dictionnaire en utilisant la fonction to_dict()
La fonction Pandas to_dict()
convertit une DataFrame en un dictionnaire. Les paramètres déterminent le format du dictionnaire et la façon dont les paires clé-valeur sont associées. Un exemple élémentaire de conversion d’une DataFrame en dictionnaire à l’aide de la fonction to_dict()
est présenté ci-dessous :
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d1 = df.to_dict()
print(d1)
Production :
{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}
Comme vous pouvez le voir dans la sortie, les noms de colonnes sont convertis en clés et chaque enregistrement en valeur, avec l’index comme clé.
Pandas DataFrame to Dictionary avec des valeurs sous forme de liste ou de Series
Nous pouvons passer des paramètres comme les fonctions list
, records
, series
, index
, split
, et dict
à to_dict()
pour modifier le format du dictionnaire final. Par exemple, lorsque nous passons list
et series
comme paramètre, nous avons les noms de colonnes comme clés, mais les paires de valeurs sont converties en une liste et une série de lignes, respectivement. L’exemple suivant le démontre.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_list = df.to_dict("list")
print(d_list)
d_series = df.to_dict("series")
print(d_series)
Production :
{'Name': ['Jay', 'Jack', 'Mark'], 'Age': [16, 19, 18], 'Course': ['BBA', 'BTech', 'BSc']}
{'Name': 0 Jay
1 Jack
2 Mark
Name: Name, dtype: object, 'Age': 0 16
1 19
2 18
Name: Age, dtype: int64, 'Course': 0 BBA
1 BTech
2 BSc
Name: Course, dtype: object}
Pandas DataFrame à la liste de dictionnaires
Nous pouvons également faire en sorte que chaque ligne, en tant que dictionnaire séparé, transmette des records
à la fonction. Le résultat final est une liste avec chaque ligne comme dictionnaire. Par exemple,
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_records = df.to_dict("records")
print(d_records)
Production :
[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}]
Pandas Dataframe au Dictionnaire par lignes
Mais dans de nombreux cas, nous ne voulons pas que les noms des colonnes soient les clés du dictionnaire. Pour de telles situations, nous pouvons passer index
pour faire de l’index de la DataFrame une clé. L’extrait de code suivant le montrera.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_index = df.to_dict("index")
print(d_index)
Production :
{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}}
Dataframe vers le dictionnaire avec une colonne comme key
Mais que faire si nous préférons utiliser les éléments d’une colonne comme clés et les éléments des autres colonnes comme valeurs ? C’est possible en faisant simplement de la colonne requise l’index du DataFrame et en prenant sa transposition à l’aide de la fonction .T()
.
Exemple :
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_names = df.set_index("Name").T.to_dict("list")
print(d_names)
Production :
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Pandas DataFrame vers le dictionnaire en utilisant les fonctions dict()
et zip()
La fonction Python dict()
peut également convertir le Pandas DataFrame en dictionnaire. Nous devrions également utiliser la fonction zip()
avec les colonnes individuelles comme arguments pour créer l’itérateur parallèle. Ensuite, la fonction zip()
produira toutes les valeurs d’une ligne dans chaque itération.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d = dict([(i, [a, b]) for i, a, b in zip(df["Name"], df["Age"], df["Course"])])
print(d)
Production :
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArticle connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme