logo oujood
🔍

Series et DataFrame Pandas

Pandas repose sur deux structures fondamentales : la Series et le DataFrame. Comprendre ces deux objets, c'est comprendre comment Pandas pense les données. Cette page vous explique leur fonctionnement avec des exemples concrets.

OUJOOD.COM

La Series : une colonne de données indexées

Une Series est la structure la plus simple de Pandas. C'est une liste de valeurs à laquelle Pandas ajoute automatiquement un index — c'est-à-dire une étiquette pour chaque valeur. Par défaut, cet index est numérique et commence à 0.

Vous pouvez créer une Series depuis une liste Python ordinaire :

  📋 Copier le code

import pandas as pd

# Créer une Series depuis une liste
temperatures = pd.Series([22, 19, 25, 17, 30])
print(temperatures)

Ce code affiche :

  📋 Copier le code

0    22
1    19
2    25
3    17
4    30
dtype: int64

À gauche, c'est l'index (0, 1, 2...). À droite, les valeurs. En bas, Pandas indique le type de données — ici int64, des entiers sur 64 bits.

L'index n'est pas forcément numérique. Vous pouvez définir des étiquettes personnalisées, ce qui rend les données beaucoup plus lisibles :

  📋 Copier le code

import pandas as pd

# Series avec un index personnalisé
temperatures = pd.Series(
    [22, 19, 25, 17, 30],
    index=["lundi", "mardi", "mercredi", "jeudi", "vendredi"]
)

print(temperatures)
# Accéder à la valeur du mercredi
print(temperatures["mercredi"])  # 25

Le DataFrame : un tableau à plusieurs colonnes

Un DataFrame est ce que vous utiliserez dans 95 % des cas avec Pandas. C'est un tableau à deux dimensions : des lignes et des colonnes, chacune avec un nom. Vous pouvez le voir comme plusieurs Series partageant le même index.

La façon la plus courante de créer un DataFrame est de passer un dictionnaire Python, où chaque clé devient un nom de colonne et chaque valeur est la liste des données de cette colonne :

  📋 Copier le code

import pandas as pd

# Créer un DataFrame depuis un dictionnaire
data = {
    "prénom":  ["Alice", "Bob", "Clara", "David"],
    "âge":     [28, 34, 22, 45],
    "ville":   ["Paris", "Lyon", "Marseille", "Bordeaux"],
    "score":   [88, 74, 95, 61]
}

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

Résultat affiché dans le terminal :

  📋 Copier le code

   prénom  âge      ville  score
0   Alice   28      Paris     88
1     Bob   34       Lyon     74
2   Clara   22  Marseille     95
3   David   45   Bordeaux     61

Pandas a créé automatiquement un index numérique (0, 1, 2, 3) pour les lignes. Les noms de colonnes viennent directement des clés du dictionnaire. Chaque colonne peut avoir un type différent : texte, entier, décimal, date, etc.

Accéder aux informations de base d'un DataFrame

Trois attributs sont utiles dès le départ pour inspecter un DataFrame sans afficher toutes ses données :

  📋 Copier le code

import pandas as pd

data = {
    "prénom":  ["Alice", "Bob", "Clara", "David"],
    "âge":     [28, 34, 22, 45],
    "ville":   ["Paris", "Lyon", "Marseille", "Bordeaux"]
}
df = pd.DataFrame(data)

# Dimensions : (nombre de lignes, nombre de colonnes)
print(df.shape)    # (4, 3)

# Noms des colonnes
print(df.columns)  # Index(['prénom', 'âge', 'ville'], dtype='object')

# Type de chaque colonne
print(df.dtypes)
# prénom    object
# âge        int64
# ville     object

df.shape retourne un tuple (lignes, colonnes) — pratique pour vérifier rapidement la taille d'un jeu de données. df.columns liste les noms de colonnes. df.dtypes indique le type de chaque colonne : object pour le texte, int64 pour les entiers, float64 pour les décimaux.

Différence concrète entre Series et DataFrame

Une Series, c'est une seule colonne. Un DataFrame, c'est un ensemble de colonnes. Quand vous extrayez une colonne d'un DataFrame, vous obtenez une Series :

  📋 Copier le code

import pandas as pd

data = {
    "prénom": ["Alice", "Bob", "Clara"],
    "âge":    [28, 34, 22]
}
df = pd.DataFrame(data)

# Extraire la colonne "âge" → retourne une Series
ages = df["âge"]
print(type(ages))   # <class 'pandas.core.series.Series'>
print(ages)

C'est une distinction importante : df["âge"] retourne une Series, tandis que df[["âge"]] (avec deux crochets) retourne un DataFrame à une seule colonne. Le comportement est différent selon les opérations que vous ferez ensuite.

Pour la suite du cours, vous travaillerez principalement avec des DataFrames. La Series apparaîtra naturellement dès que vous manipulez une colonne isolée.

Par carabde | Mis à jour le 26 avril 2026