Pandas & NumPy Academy · Les

Kolommen en rijen selecteren

Selecteer één of meerdere kolommen met bracket-notatie en haal rijen op basis van label en positie op met .loc en .iloc.

Les 2 van 413 stappen

Kolommen en rijen selecteren is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 2 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.

Eén kolom selecteren

Open één kolom op naam met haakjesnotatie df['col']; dit retourneert een Series. Je kunt ook puntnotatie gebruiken met df.col wanneer de kolomnaam een geldige Python-identificatie zonder spaties is. Haakjesnotatie is altijd veilig; puntnotatie werkt niet voor namen die botsen met DataFrame-methoden zoals count of mean.

import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name'])     # Series
print(type(df['name']))  # pandas.core.series.Series

Meerdere kolommen selecteren

Geef voor het selecteren van meerdere kolommen een lijst met kolomnamen tussen de haakjes door: df[['col1', 'col2']]. Let op de dubbele haakjes: het buitenste paar is de indexeringsoperator en het binnenste paar maakt een Python-lijst. Het resultaat is een DataFrame, geen Series. Dit wordt vaak gebruikt om een kenmerkentabel voor machine learning te extraheren.

import pandas as pd

df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset))      # pandas.core.frame.DataFrame
print(subset)

.loc voor rij- en kolomselectie

df.loc[row_label, col_label] selecteert gegevens op basis van een label. Geef voor zowel rijen als kolommen één label, een lijst met labels of een segment op. df.loc[:, 'score'] selecteert alle rijen van de kolom 'score'. df.loc['r1':'r3', ['a', 'b']] selecteert de rijen r1 tot en met r3 (inclusief) voor de kolommen a en b.

import pandas as pd

df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
                  index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x'])       # 20
print(df.loc['r1':'r2', 'y'])  # r1:40  r2:50

.iloc voor positiegebaseerde selectie

df.iloc[row_pos, col_pos] selecteert op basis van een gehele positie en negeert labels. Beide argumenten volgen de Python-conventies voor segmenten, waarbij de eindpositie niet wordt meegenomen. df.iloc[:, 0] selecteert de eerste kolom als Series. df.iloc[0:2, 1:3] selecteert een rechthoekig sub-DataFrame van 2×2 linksboven.

import pandas as pd

df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2])        # 8  -- row 1, col 2
print(df.iloc[0:2, 0:2])   # top-left 2x2 sub-table

Rijen selecteren met booleaanse waarden

Geef een boolean Series (met dezelfde index als het DataFrame) door aan .loc om rijen te filteren. Maak de boolean Series vanuit een voorwaarde op een kolom. Je kunt voorwaarden combineren met & en |. Dit is het standaardfilterpatroon in gegevensanalyse met Pandas en is veel expressiever dan SQL WHERE-clausules voor complexe voorwaarden over meerdere kolommen.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
#   name  score
# 0    A     80
# 2    C     92
# 3    D     71

Samengestelde filtervoorwaarden

Meerdere voorwaarden moeten elk tussen haakjes staan en worden gecombineerd met & (EN) of | (OF). Als je de Python-sleutelwoorden and/or op Series gebruikt, ontstaat er een fout. Gebruik ~ (tilde) in plaats van not om een voorwaarde te ontkennen. Test voorwaarden altijd afzonderlijk voordat je ze combineert, zodat je de oorzaak van onverwachte resultaten kunt isoleren.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'],
                   'score': [80, 55, 92, 71],
                   'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)

Rijen selecteren op gehele positie

df.iloc[n] retourneert de n-de rij als een Series. df.iloc[n:m] retourneert de rijen n tot en met m-1 als een DataFrame. df.iloc[[0, 2, 4]] selecteert specifieke rijen op positie met behulp van uitgebreide indexering. Dit komt overeen met rijselectie in NumPy-arrays en wordt vaak gebruikt om trainings- en testgegevens te splitsen voordat je machinelearningmodellen toepast.

import pandas as pd

df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0])         # first row as Series
print(df.iloc[1:3])       # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]])    # first and last row

Rij- en kolomselectie combineren

Zowel .loc als .iloc accepteren twee argumenten: df.loc[row_selector, col_selector]. Hiermee kun je in één expressie nauwkeurig een rechthoekig gebied selecteren. Een dubbele punt : op zichzelf selecteert alle rijen of alle kolommen. Dit patroon is essentieel voor het extraheren van een kenmerkentabel met specifieke kolommen voor alleen de trainingsrijen van een gegevensverzameling.

import pandas as pd

df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
#    y  z
# 1  5  8
# 2  6  9

Eén rij selecteren met .loc

Wanneer je één scalair label doorgeeft aan df.loc[label], is het resultaat een Series waarvan de index uit de kolomnamen bestaat. Dit is handig om een specifiek record te inspecteren. Als je in plaats daarvan een DataFrame met één rij wilt, zet je het label in een lijst: df.loc[[label]]. Dit onderscheid is belangrijk wanneer je resultaten doorgeeft aan functies die een DataFrame verwachten.

import pandas as pd

df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
                  index=['r1', 'r2'])
print(type(df.loc['r1']))    # Series
print(type(df.loc[['r1']])) # DataFrame

at en iat voor snelle toegang tot scalaire waarden

df.at[row_label, col_name] en df.iat[row_pos, col_pos] halen één scalaire waarde op of stellen deze in met minder overhead dan .loc/.iloc. Ze zijn bedoeld voor lussen die afzonderlijke cellen bijwerken. Geef in productiecode altijd de voorkeur aan vectorbewerkingen boven updates cel voor cel, maar gebruik at/iat wanneer je echt moet itereren.

import pandas as pd

df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
                  index=['a', 'b', 'c'])
print(df.at['b', 'y'])    # 5
print(df.iat[2, 0])       # 3

Waarschuwing voor gekoppelde indexering

Gekoppelde indexering zoals df['col'][condition] of df[mask]['col'] = val kan een SettingWithCopyWarning veroorzaken, omdat Pandas mogelijk op een kopie werkt in plaats van op het origineel. Gebruik voor elke wijziging altijd één .loc-expressie: df.loc[mask, 'col'] = val. Dit is het juiste patroon zonder waarschuwingen.

import pandas as pd

df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100

# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)

Korte controle

Test je begrip van het selecteren van kolommen en rijen uit deze les.

Samenvatting van de les

In deze les heb je geleerd dat .loc rijen en kolommen selecteert op label, met inclusieve eindpunten van segmenten, dat .iloc selecteert op gehele positie, met exclusieve eindpunten zoals Python-segmenten en dat booleaanse voorwaarden via .loc rijen filteren zonder de valkuil van SettingWithCopyWarning bij gekoppelde indexering. Hierna voeg je nieuwe berekende kolommen toe, hernoem je bestaande kolommen en verwijder je ongewenste kolommen met drop().

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 “Kolommen en rijen selecteren” gratis?

Ja — de volledige tekst van “Kolommen en rijen selecteren” 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 “Kolommen en rijen selecteren”?

Selecteer één of meerdere kolommen met bracket-notatie en haal rijen op basis van label en positie op met .loc en .iloc. 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 2 van 4.

Hoe lang duurt de les “Kolommen en rijen selecteren”?

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. DataFrames maken
  2. Kolommen en rijen selecteren
  3. Kolommen toevoegen en verwijderen
  4. DataFrames elementair inspecteren
← Terug naar Pandas & NumPy Academy