Définir et réinitialiser l’index
Élevez une colonne au rang d’index des lignes avec set_index(), rétablissez-la avec reset_index() et découvrez la vue d’ensemble d’un MultiIndex.
Définir et réinitialiser l’index est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Qu’est-ce que l’index du DataFrame ?
Chaque DataFrame Pandas possède un index de lignes : un ensemble d’étiquettes associées à chaque ligne. L’index par défaut est un RangeIndex (0, 1, 2, …), mais vous pouvez le remplacer par n’importe quelle colonne qui joue le rôle d’identifiant naturel : une date, un identifiant de produit, un identifiant utilisateur ou toute clé unique. Un index pertinent améliore la lisibilité, permet la sélection fondée sur les étiquettes et est nécessaire pour le rééchantillonnage des séries temporelles.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
print('Default index:', df.index.tolist()) # [0, 1, 2]
print(df)set_index() — Promouvoir une colonne
DataFrame.set_index('col') transforme la colonne indiquée en index de lignes et la retire des colonnes ordinaires. Les valeurs de la colonne deviennent les étiquettes des lignes. C’est la méthode standard pour rendre un DataFrame plus explicite lorsqu’une colonne joue le rôle de clé naturelle. Un nouveau DataFrame est renvoyé ; l’original reste inchangé, sauf si vous utilisez inplace=True.
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'sales': [100, 200, 150]
})
df = df.set_index('date')
print(df)
# sales
# date
# 2024-01-01 100
# 2024-01-02 200
# 2024-01-03 150
print(df.index) # Index(['2024-01-01', ...], dtype='object', name='date')Sélectionner des lignes avec un index personnalisé
Une fois qu’une colonne pertinente est devenue l’index, vous pouvez utiliser .loc[label] pour récupérer des lignes par leur étiquette avec une syntaxe claire et lisible, sans masque booléen. Avec un DatetimeIndex, vous pouvez même utiliser des chaînes de dates partielles comme df.loc['2024-01'] pour sélectionner toutes les lignes de janvier 2024.
import pandas as pd
df = pd.DataFrame({
'product': ['A', 'B', 'C'],
'price': [10, 20, 30],
'stock': [100, 50, 75]
})
df = df.set_index('product')
# Access row by label
print(df.loc['B'])
# price 20
# stock 50
# Name: B, dtype: int64set_index() avec plusieurs colonnes — MultiIndex
Le fait de transmettre une liste de noms de colonnes à set_index() crée un MultiIndex (index hiérarchique). Le DataFrame obtenu peut être consulté à l’aide de tuples dans .loc[]. MultiIndex est essentiel pour les séries temporelles groupées (région + date), les données de panel (sujet + temps) et toute analyse nécessitant un regroupement des lignes sur deux niveaux.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'East', 'West', 'West'],
'year': [2023, 2024, 2023, 2024],
'revenue': [100, 150, 200, 220]
})
df = df.set_index(['region', 'year'])
print(df)
# revenue
# region year
# East 2023 100
# 2024 150
# West 2023 200
# 2024 220
print(df.loc[('East', 2024)]) # revenue = 150Paramètre drop= dans set_index()
Par défaut, set_index('col') retire la colonne des colonnes ordinaires du DataFrame lorsqu’elle devient l’index. Transmettez drop=False pour conserver la colonne tout en l’utilisant comme index. Cette option est parfois utile lorsque vous souhaitez un accès fondé sur les étiquettes, tout en ayant besoin de la colonne pour des calculs dans l’espace des colonnes ordinaires.
import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})
# Keep 'id' as both index and column
df_with_both = df.set_index('id', drop=False)
print(df_with_both)
# id value
# id
# 1 1 10
# 2 2 20
# 3 3 30reset_index() — Replacer l’index dans une colonne
reset_index() est l’inverse de set_index() : elle replace l’index actuel des lignes dans une colonne ordinaire et remplace l’index par défaut par un RangeIndex. Cette opération est souvent nécessaire après un groupby().agg() ou après des opérations qui vous laissent avec un index pertinent que vous devez utiliser comme colonne pour la suite du traitement.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200]}, index=['East', 'West'])
df.index.name = 'region'
reset = df.reset_index()
print(reset)
# region sales
# 0 East 100
# 1 West 200
print(reset.index.tolist()) # [0, 1] — default RangeIndex restoredreset_index(drop=True)
Transmettre drop=True à reset_index() supprime entièrement l’index actuel au lieu de le déplacer dans une colonne. Utilisez cette option lorsque l’index actuel ne contient aucune information pertinente (par exemple, après le filtrage de lignes, lorsque l’index comporte des intervalles comme 0, 3, 7) et que vous souhaitez simplement un index séquentiel propre commençant à 0.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40, 50]})
filtered = df[df['x'] > 15]
print('Filtered index:', filtered.index.tolist()) # [1, 2, 3, 4]
# Drop the old index — don't move it to a column
clean = filtered.reset_index(drop=True)
print('Clean index:', clean.index.tolist()) # [0, 1, 2, 3]reset_index() après groupby
Après l’appel à groupby().agg(), les clés de regroupement deviennent l’index. L’appel à reset_index() les reconvertit en colonnes ordinaires et fournit un résultat tabulaire plat, plus facile à manipuler, à fusionner ou à exporter. C’est l’une des utilisations les plus courantes de reset_index() en pratique.
import pandas as pd
df = pd.DataFrame({
'dept': ['Eng', 'HR', 'Eng', 'Sales', 'HR'],
'salary': [90000, 50000, 80000, 70000, 55000]
})
# After groupby, dept becomes the index
agg = df.groupby('dept')['salary'].mean()
print(type(agg), agg.index.tolist())
# dept is the index
# Reset makes dept a regular column again
result = agg.reset_index()
result.columns = ['dept', 'avg_salary']
print(result)rename_axis() pour nommer l’index
Lorsque l’index des lignes n’a pas de nom, ou lorsque vous souhaitez le renommer pour plus de clarté, utilisez df.rename_axis('new_name') (pour l’index des lignes) ou df.rename_axis('col_name', axis=1) (pour l’axe des colonnes). Donner un nom pertinent à l’index rend le résultat plus explicite, en particulier lors de l’exportation vers un fichier CSV, où le nom de l’index devient un en-tête de colonne.
import pandas as pd
df = pd.DataFrame({'sales': [100, 200, 300]}, index=['A', 'B', 'C'])
print(df.index.name) # None
# Name the index
df = df.rename_axis('region')
print(df)
# sales
# region
# A 100
# B 200
# C 300Réindexer pour combler les intervalles
DataFrame.reindex(new_index) remodèle le DataFrame pour l’adapter à un nouvel index et remplit de NaN les positions présentes dans le nouvel index mais absentes des données d’origine. Cette opération sert à aligner des DataFrames sur un index complet commun, par exemple pour s’assurer que chaque mois d’une année apparaît, même si aucune donnée n’existe pour certains mois.
import pandas as pd
df = pd.DataFrame({
'month': ['Jan', 'Mar', 'Jun'],
'revenue': [100, 200, 300]
}).set_index('month')
all_months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
complete = df.reindex(all_months)
print(complete)
# revenue
# Jan 100.0
# Feb NaN <- filled with NaN
# Mar 200.0
# Apr NaN
# May NaN
# Jun 300.0reset_index et sélection des niveaux d’un MultiIndex
Pour un DataFrame doté d’un MultiIndex, reset_index() replace par défaut tous les niveaux dans des colonnes. Transmettez level= pour ne réinitialiser que certains niveaux. Cette possibilité est utile lorsque vous souhaitez conserver un niveau comme index (par exemple, garder la date comme index) et déplacer uniquement l’autre niveau dans une colonne.
import pandas as pd
df = pd.DataFrame(
{'revenue': [100, 150, 200, 220]},
index=pd.MultiIndex.from_tuples(
[('East', 2023), ('East', 2024), ('West', 2023), ('West', 2024)],
names=['region', 'year']
)
)
# Reset only the 'year' level, keep 'region' as index
df2 = df.reset_index(level='year')
print(df2)
# year revenue
# region
# East 2023 100
# East 2024 150
# West 2023 200
# West 2024 220Vérification rapide
Vérifiez votre compréhension de la définition et de la réinitialisation de l’index.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que set_index('col') transforme une colonne en index de lignes pour permettre un accès fondé sur les étiquettes, que la transmission d’une liste crée un MultiIndex et que reset_index() replace l’index dans une colonne (utilisez drop=True pour le supprimer à la place). Utilisez reindex() pour aligner les données sur un index cible complet en remplissant de NaN les positions manquantes. Ces techniques sont fondamentales pour les prochaines leçons consacrées à GroupBy et à la fusion.
Apprends Python avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Définir et réinitialiser l’index » est-elle gratuite ?
Oui — le texte complet de « Définir et réinitialiser l’index » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Définir et réinitialiser l’index » ?
Élevez une colonne au rang d’index des lignes avec set_index(), rétablissez-la avec reset_index() et découvrez la vue d’ensemble d’un MultiIndex. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?
Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Définir et réinitialiser l’index » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?
Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Trier par valeurs de colonne
- Trier par index
- Classer les valeurs
- Définir et réinitialiser l’index