Pandas & NumPy Academy · Les

De index instellen en herstellen

Maak van een kolom de rij-index met set_index(), zet deze terug met reset_index() en gebruik een overzicht van MultiIndex.

Les 4 van 413 stappen

De index instellen en herstellen is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Wat is de DataFrame-index?

Elke Pandas DataFrame heeft een rij-index — een reeks labels die aan elke rij is gekoppeld. De standaardindex is een RangeIndex (0, 1, 2, …), maar je kunt deze vervangen door elke kolom die als natuurlijke identificatie dient: een datum, product-ID, gebruikers-ID of unieke sleutel. Een betekenisvolle index verbetert de leesbaarheid, maakt selecties op basis van labels mogelijk en is vereist voor het opnieuw samplen van tijdreeksen.

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() — Een kolom promoveren

DataFrame.set_index('col') promoveert de opgegeven kolom tot rij-index en verwijdert deze uit de gewone kolommen. De waarden van de kolom worden rijlabels. Dit is de standaardmanier om een DataFrame duidelijker te maken wanneer één kolom als natuurlijke sleutel dient. Er wordt een nieuwe DataFrame teruggegeven; het origineel blijft ongewijzigd tenzij inplace=True wordt gebruikt.

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')

Rijen selecteren met een aangepaste index

Zodra een betekenisvolle kolom de index is, kun je .loc[label] gebruiken om rijen op label op te halen met een duidelijke, leesbare syntaxis — zonder booleaanse maskers. Bij een DatetimeIndex kun je zelfs gedeeltelijke datumtekenreeksen gebruiken, zoals df.loc['2024-01'], om alle rijen in januari 2024 te selecteren.

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: int64

set_index() met meerdere kolommen — MultiIndex

Als je een lijst met kolomnamen doorgeeft aan set_index(), maak je een MultiIndex (hiërarchische index). Je krijgt toegang tot de resulterende DataFrame met tuples in .loc[]. MultiIndex is essentieel voor gegroepeerde tijdreeksen (regio + datum), paneelgegevens (onderwerp + tijd) en elke analyse waarvoor groepering van rijen op twee niveaus nodig is.

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 = 150

Parameter drop= in set_index()

Standaard verwijdert set_index('col') de kolom uit de gewone kolommen van de DataFrame zodra deze de index wordt. Geef drop=False door om de kolom te behouden en deze tegelijkertijd als index te gebruiken. Dit is soms nuttig wanneer je toegang op basis van labels wilt, maar de kolom ook beschikbaar moet blijven voor berekeningen in de gewone kolomruimte.

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     30

reset_index() — Index terugplaatsen in een kolom

reset_index() is het omgekeerde van set_index(): de methode verplaatst de huidige rij-index terug naar een gewone kolom en vervangt de index door de standaard RangeIndex. Dit is vaak nodig na een groupby().agg() of na bewerkingen die je een betekenisvolle index geven die je in verdere verwerking als kolom wilt gebruiken.

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 restored

reset_index(drop=True)

Als je drop=True doorgeeft aan reset_index(), wordt de huidige index volledig verwijderd in plaats van deze naar een kolom te verplaatsen. Gebruik dit wanneer de huidige index geen betekenisvolle informatie bevat (bijvoorbeeld na het filteren van rijen, wanneer de index hiaten zoals 0, 3, 7 bevat) en je gewoon een schone opeenvolgende index vanaf 0 wilt.

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() na groupby

Na het aanroepen van groupby().agg() worden de groepssleutels de index. Door reset_index() aan te roepen zet je ze terug naar gewone kolommen, waardoor je een vlak tabelresultaat krijgt dat gemakkelijker te bewerken, samen te voegen of te exporteren is. Dit is in de praktijk een van de meest voorkomende toepassingen van reset_index().

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() voor de indexnaam

Als de rij-index geen naam heeft, of als je deze voor de duidelijkheid wilt hernoemen, gebruik je df.rename_axis('new_name') (voor de rij-index) of df.rename_axis('col_name', axis=1) (voor de kolom-as). Een betekenisvolle naam voor de index maakt de uitvoer beter zelfverklarend, vooral bij het exporteren naar CSV, waarbij de indexnaam een kolomkop wordt.

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         300

Opnieuw indexeren om hiaten op te vullen

DataFrame.reindex(new_index) past de vorm van de DataFrame aan een nieuwe index aan en vult posities die wel in de nieuwe index maar niet in de oorspronkelijke gegevens voorkomen met NaN. Dit wordt gebruikt om DataFrames uit te lijnen op een gemeenschappelijke volledige index — bijvoorbeeld om ervoor te zorgen dat elke maand van een jaar voorkomt, ook als er voor sommige maanden geen gegevens zijn.

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.0

MultiIndex reset_index en niveauselectie

Bij een MultiIndex-DataFrame verplaatst reset_index() standaard alle niveaus terug naar kolommen. Geef level= door om alleen specifieke niveaus te herstellen. Dit is nuttig wanneer je één niveau als index wilt behouden (bijvoorbeeld de datum als index) en alleen het andere niveau naar een kolom wilt verplaatsen.

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      220

Korte controle

Test je begrip van het instellen en herstellen van de index.

Samenvatting van de les

In deze les heb je geleerd dat set_index('col') een kolom promoveert tot rij-index voor toegang op basis van labels, dat het doorgeven van een lijst een MultiIndex maakt en dat reset_index() de index terugplaatst in een kolom (gebruik drop=True om deze in plaats daarvan te verwijderen). Gebruik reindex() om uit te lijnen op een volledige doelindex en ontbrekende posities met NaN op te vullen. Deze technieken vormen de basis voor de komende lessen over GroupBy en samenvoegen.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “De index instellen en herstellen” gratis?

Ja — de volledige tekst van “De index instellen en herstellen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.

Wat leer ik in “De index instellen en herstellen”?

Maak van een kolom de rij-index met set_index(), zet deze terug met reset_index() en gebruik een overzicht van MultiIndex. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?

Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “De index instellen en herstellen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?

Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Sorteren op kolomwaarden
  2. Sorteren op index
  3. Waarden rangschikken
  4. De index instellen en herstellen
← Terug naar Pandas & NumPy Academy