HOWTO · Pandas

Créer un DataFrame Pandas à partir d'une liste

Découvrez comment créer un DataFrame pandas à partir d’une liste, de listes parallèles, de lignes imbriquées, de dictionnaires ou d’un tableau NumPy, avec des exemples montrant comment chaque structure d’entrée correspond aux lignes et aux colonnes.

Sur cette page

Utilisez le constructeur Pandas pd.DataFrame() pour transformer des données sous forme de listes en tableau. Choisissez la structure qui correspond à vos données : une liste simple forme une colonne, une liste de listes forme des lignes, et les dictionnaires fournissent des colonnes nommées ou des enregistrements. Les exemples ci-dessous montrent comment nommer les colonnes et comment chaque structure se traduit dans le DataFrame obtenu. Les libellés des exemples restent en anglais.

Créer un DataFrame à partir d’une seule liste

Passez une liste à une dimension à pd.DataFrame() et indiquez un libellé de colonne. Chaque valeur de la liste devient une ligne de cette colonne.

import pandas as pd

values = [10, 20, 30]
df = pd.DataFrame(values, columns=["Score"])
print(df)

L’argument columns attend une liste de libellés, même si l’entrée ne contient qu’une seule colonne. Le DataFrame attribue un index de ligne par défaut, sauf si vous en fournissez un autre. Avec ces données, le résultat comporte une colonne Score et une ligne pour chaque valeur.

Créer un DataFrame à partir de plusieurs listes

Lorsque des listes distinctes contiennent les valeurs de colonnes correspondantes, utilisez la fonction Python zip() pour associer les éléments selon leur position, puis transmettez les lignes obtenues au constructeur.

import pandas as pd

names = ["Ada", "Lin"]
scores = [95, 88]
rows = list(zip(names, scores))
df = pd.DataFrame(rows, columns=["Name", "Score"])
print(df)

Les premières valeurs des deux listes forment la première ligne, les deuxièmes valeurs forment la suivante, et ainsi de suite. zip() s’arrête à la liste la plus courte : les valeurs restantes d’une liste plus longue ne sont donc pas incluses. Si toutes les valeurs doivent apparaître dans le résultat, utilisez des listes de longueurs compatibles.

Créer un DataFrame à partir d’une liste de listes

Pour des données organisées par ligne, faites de chaque liste interne une ligne et transmettez à pd.DataFrame() les libellés de colonnes correspondants.

import pandas as pd

rows = [[1, "Ada", 95], [2, "Lin", 88]]
df = pd.DataFrame(rows, columns=["ID", "Name", "Score"])
print(df)

Ici, le premier élément de chaque liste interne correspond à ID, le deuxième à Name et le troisième à Score. Chaque ligne doit contenir une valeur pour chacun des libellés de colonne fournis ; veillez à respecter cette correspondance lors de la préparation des listes imbriquées. Ce format est utile lorsque les données sont déjà organisées en enregistrements, mais que chaque valeur n’a pas encore de nom de champ associé.

Créer un DataFrame à partir d’une liste de dictionnaires

Utilisez une liste de dictionnaires lorsque chaque enregistrement associe déjà des valeurs à des noms de champs. Pandas utilise les clés des dictionnaires comme libellés de colonnes et chaque dictionnaire comme une ligne.

import pandas as pd

records = [
    {"Name": "Ada", "Score": 95},
    {"Name": "Lin", "Score": 88},
]
df = pd.DataFrame(records)
print(df)

Cette structure convient aux données sous forme d’enregistrements, car les valeurs sont repérées par leurs clés plutôt que par leur position. Si un dictionnaire omet une clé présente dans d’autres enregistrements, Pandas crée la colonne correspondante et indique une valeur manquante pour cette ligne. Ajoutez columns=[...] au constructeur pour contrôler l’ordre des colonnes ou inclure un ensemble connu de champs.

Créer un DataFrame à partir d’un dictionnaire de listes

Pour des données organisées par colonne, associez chaque nom de colonne à une liste de valeurs. Les clés du dictionnaire deviennent les libellés, et chaque liste fournit les valeurs de sa colonne.

import pandas as pd

columns = {
    "Name": ["Ada", "Lin"],
    "Score": [95, 88],
}
df = pd.DataFrame(columns)
print(df)

Toutes les listes du dictionnaire doivent avoir la même longueur pour que Pandas puisse les assembler en lignes. Cette structure est pratique lorsque les valeurs sont recueillies par champ, par exemple dans une liste de noms et une autre de scores. Si vos données sont plutôt organisées par ligne, utilisez la méthode de la liste de listes présentée plus haut.

Créer un DataFrame à partir d’un tableau NumPy

Un tableau NumPy à deux dimensions peut être transmis à pd.DataFrame(), comme une liste imbriquée. Fournissez des libellés de colonnes si celles du tableau doivent avoir des noms descriptifs.

import numpy as np
import pandas as pd

values = np.array([[1, 95], [2, 88]])
df = pd.DataFrame(values, columns=["ID", "Score"])
print(df)

Les tableaux NumPy possèdent un dtype qui s’applique à leurs éléments. Par exemple, la création d’un même tableau à partir d’un mélange de nombres et de chaînes peut convertir ses valeurs numériques en chaînes avant la création du DataFrame. Si les colonnes doivent avoir des types différents, construisez-les comme valeurs distinctes d’un dictionnaire ou utilisez une liste de dictionnaires. Cet exemple utilise un tableau numérique et ne formule aucune affirmation sur les performances ; choisissez la structure qui représente le mieux vos données.