Convertir la trame de données Pandas en dictionnaire

  1. Pandas DataFrame vers un dictionnaire en utilisant la fonction to_dict()
  2. Pandas DataFrame to Dictionary avec des valeurs sous forme de liste ou de Series
  3. Pandas DataFrame à la liste de dictionnaires
  4. Pandas Dataframe au Dictionnaire par lignes
  5. Dataframe vers le dictionnaire avec une colonne comme key
  6. Pandas DataFrame vers le dictionnaire en utilisant les fonctions dict() et zip()

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']}

Article connexe - Pandas DataFrame

  • Comment supprimer une ligne en fonction de la valeur de la colonne dans Pandas DataFrame
  • Comment créer une colonne vide dans Pandas DataFrame