Comment créer une dataframe pandas à partir d'un dictionnaire python ?

Published: 27 novembre 2022

Tags: Python; Pandas; Dataframe; Dictionnaire;

DMCA.com Protection Status

Exemples de comment créer une dataframe pandas à partir d'un dictionnaire python:

Créer une dataframe à partir d'un dictionnaire python (méthode 1)

Pour créer une dataframe à partir d'un dictionnaire python :

d = {
    'Name': ['Ben', 'John', 'Emma', 'Zoe'],
    'Age': [40, 56, 34, 12]
}

une solution est de faire

import pandas as pd

df = pd.DataFrame(d)

donne

   Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

Créer une dataframe à partir d'un dictionnaire python (méthode 2)

Une autre solution consiste à utiliser pandas.DataFrame.from_dict

df = pd.DataFrame.from_dict(d)

print(df)

donne

   Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

L'avantage est d'utiliser des paramètres tels que "orient":

df = pd.DataFrame.from_dict(d, orient='index')

donne alors

        0     1     2    3
Name  Ben  John  Emma  Zoe
Age    40    56    34   12

Ajoutez des noms de colonne :

df = pd.DataFrame.from_dict(d, orient='index', columns=['User 1', 'User 2', 'User 3', 'User 4'])

donne

     User 1 User 2 User 3 User 4
Name    Ben   John   Emma    Zoe
Age      40     56     34     12

Ajouter une nouvelle ligne dans un dataframe

Autre exemple, ajoutez une nouvelle ligne dans un dataframe existant :

import pandas as pd

d = {
    'Name': ['Ben', 'John', 'Emma', 'Zoe'],
    'Age': [40, 56, 34, 12]
}

df = pd.DataFrame.from_dict(d)

    Name  Age
0   Ben   40
1  John   56
2  Emma   34
3   Zoe   12

Créer une nouvelle dataframe à partir d'un dictionnaire python

new_d = {
    'Name': ['Paula'],
    'Age': [67]
}

df_new_row = pd.DataFrame.from_dict(new_d)

Pour ajouter une nouvelle ligne, une solution consiste à utiliser concat() (voir Comment fusionner / concatener deux dataframes avec pandas en python ? et Comment créer une DataFrame vide avec pandas et la remplir ligne par ligne en python ?)

df = pd.concat([df,df_new_row], ignore_index=True)

donne

     Name  Age
0    Ben   40
1   John   56
2   Emma   34
3    Zoe   12
4  Paula   67

Corriger l'erreur "If using all scalar values, you must pass an index"

new_d = {
    'Name': 'Paula',
    'Age': 67
}

df_new_row = pd.DataFrame.from_dict(new_d)

donne

 ValueError: If using all scalar values, you must pass an index

C'est parce que les valeurs du dictionnaire new_d ne sont pas une liste.

Pour résoudre ce problème, ajoutez simplement [] :

new_d = {
    'Name': ['Paula'],
    'Age': [67]
}

df_new_row = pd.DataFrame.from_dict(new_d)

Voir aussi