logo oujood
🔍

Créer un DataFrame depuis un dictionnaire

Le dictionnaire Python est le point de départ le plus naturel pour construire un DataFrame Pandas. Cette page vous montre comment ça fonctionne, avec les variantes utiles que vous rencontrerez en pratique.

OUJOOD.COM

Pourquoi partir d'un dictionnaire ?

Un dictionnaire Python et un DataFrame Pandas partagent la même logique : des clés associées à des valeurs. Dans un DataFrame, les clés deviennent les noms de colonnes et les valeurs deviennent les données de chaque colonne. C'est la correspondance la plus directe qui soit.

C'est aussi la méthode que vous utiliserez le plus souvent quand vous construisez des données à la main — pour tester une fonction, préparer un jeu de données d'exemple ou assembler des résultats issus de plusieurs calculs.

Créer un DataFrame simple depuis un dictionnaire

La syntaxe de base : vous passez un dictionnaire à pd.DataFrame(). Chaque clé est un nom de colonne, chaque liste de valeurs est le contenu de cette colonne. Toutes les listes doivent avoir la même longueur — Pandas refusera sinon.

  📋 Copier le code

import pandas as pd

# Dictionnaire : clé = nom de colonne, valeur = liste de données
employes = {
    "nom":         ["Martin", "Dupont", "Bernard", "Moreau"],
    "département": ["RH",     "Tech",   "Tech",    "Finance"],
    "salaire":     [2800,     3500,     3200,      4100],
    "ancienneté":  [3,        7,        2,         11]
}

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

Résultat :

  📋 Copier le code

      nom département  salaire  ancienneté
0  Martin          RH     2800           3
1  Dupont        Tech     3500           7
2 Bernard        Tech     3200           2
3  Moreau     Finance     4100          11

Pandas crée automatiquement un index numérique (0, 1, 2, 3). L'ordre des colonnes dans le DataFrame correspond à l'ordre des clés dans le dictionnaire — ce comportement est garanti depuis Python 3.7 qui préserve l'ordre d'insertion des dictionnaires.

Définir un index personnalisé

L'index par défaut (0, 1, 2...) est pratique mais pas toujours parlant. Vous pouvez le remplacer par n'importe quelle valeur via le paramètre index. Un identifiant métier ou une date rendent souvent les données plus lisibles et les recherches plus rapides.

  📋 Copier le code

import pandas as pd

produits = {
    "nom":   ["Clavier", "Souris", "Écran", "Casque"],
    "prix":  [45.90,     22.50,   189.00,  79.99],
    "stock": [120,       85,      34,      67]
}

# Index personnalisé : codes produits internes
df = pd.DataFrame(produits, index=["PRD001", "PRD002", "PRD003", "PRD004"])
print(df)

# Accéder à une ligne par son index nommé
print(df.loc["PRD003"])

Avec cet index, df.loc["PRD003"] retourne directement la ligne de l'écran sans avoir à connaître sa position numérique. C'est particulièrement utile quand les données arrivent dans un ordre variable.

Sélectionner un sous-ensemble de colonnes à la création

Vous avez un dictionnaire avec beaucoup de clés mais vous n'en avez besoin que d'une partie ? Le paramètre columns vous permet de choisir lesquelles inclure, et dans quel ordre, sans modifier le dictionnaire source.

  📋 Copier le code

import pandas as pd

donnees = {
    "nom":          ["Alice", "Bob", "Clara"],
    "âge":          [28, 34, 22],
    "email":        ["alice@ex.com", "bob@ex.com", "clara@ex.com"],
    "mot_de_passe": ["xxx", "yyy", "zzz"],  # colonne à exclure
    "score":        [88, 74, 95]
}

# On garde seulement les colonnes utiles, dans l'ordre voulu
df = pd.DataFrame(donnees, columns=["nom", "âge", "score"])
print(df)

Le dictionnaire source reste intact. Le DataFrame ne contient que les trois colonnes demandées. Si vous demandez une colonne qui n'existe pas dans le dictionnaire, Pandas l'ajoute avec des valeurs NaN — un comportement à connaître pour éviter les surprises.

Créer un DataFrame depuis une liste de dictionnaires

Une variante courante : vous avez une liste où chaque élément est un dictionnaire représentant une ligne. C'est le format que vous obtenez typiquement depuis une API JSON ou une base de données.

  📋 Copier le code

import pandas as pd

# Liste de dictionnaires : chaque dict = une ligne
commandes = [
    {"id": 1001, "produit": "Clavier", "quantité": 2, "total": 91.80},
    {"id": 1002, "produit": "Souris",  "quantité": 1, "total": 22.50},
    {"id": 1003, "produit": "Écran",   "quantité": 1, "total": 189.00},
]

df = pd.DataFrame(commandes)
print(df)
print(df.dtypes)

Pandas détecte automatiquement le type de chaque colonne : int64 pour les entiers, float64 pour les décimaux, object pour les chaînes. Si les dictionnaires de la liste n'ont pas tous les mêmes clés, Pandas remplit les valeurs manquantes avec NaN.

Cette façon de construire un DataFrame — une ligne = un dictionnaire — est souvent plus lisible que la version colonne par colonne quand les enregistrements sont nombreux ou complexes.

Par carabde | Mis à jour le 26 avril 2026