Hoe pandas DataFrames te indexeren
De indexering van Python pandas DataFrames maakt efficiënte en directe toegang tot gegevens mogelijk. Het maakt het gemakkelijker om specifieke rijen en kolommen te selecteren, wat gegevensanalysetaken vereenvoudigt.
Wat is indexering in pandas?
Indexering in pandas verwijst naar verschillende methoden die u kunt gebruiken om rijen of kolommen te selecteren. Met behulp van labels van rijen en kolommen of hun numerieke positie binnen het DataFrame kunt u eenvoudig elementen in een DataFrame selecteren. Een index fungeert als een soort adrestsysteem voor uw gegevens, waardoor u uw gegevens efficiënter kunt lokaliseren en beheren.
Wat is pandas DataFrame.index?
Je kunt de indexlabels van een DataFrame in pandas bekijken met behulp van het index -attribuut. De syntaxis ziet er als volgt uit:
DataFrame.indexpythonWat is de syntaxis voor het indexeren van DataFrames in pandas?
Er zijn verschillende manieren om pandas DataFrames te indexeren, en de syntaxis varieert afhankelijk van de bewerking die u wilt uitvoeren.
Indexeren met labels (kolomlabels)
Je kunt kolomnamen gebruiken om pandas DataFrames te indexeren. Hier is een voorbeeld van hoe je een voorbeeld DataFrame kunt maken:
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['Nottingham', 'London', 'Cardiff']
}
df = pd.DataFrame(data)
print(df)pythonZo ziet het DataFrame eruit:
Name Age City
0 Alice 25 Nottingham
1 Bob 30 London
2 Charlie 35 CardiffOm toegang te krijgen tot alle waarden in een kolom, kunt u de kolomnaam samen met de indexeringsoperator [] gebruiken. Voer gewoon de kolomnaam als een Python-string in binnen de indexeringsoperator:
# Access the Age column
print(df['Age'])pythonDe uitvoer is een lijst met leeftijden:
0 25
1 30
2 35
Name: Age, dtype: int64Om de gegevens van meer dan één kolom op te halen, schrijft u de kolomnamen in de indexeringsoperator en plaatst u komma’s tussen de kolomnamen om ze te scheiden.
Indexering met loc[] (rijlabels)
Als u toegang wilt tot een specifieke rij in uw DataFrame, kunt u de pandas loc-indexer gebruiken. U kunt het rijlabel of rijnummer doorgeven aan de indexer. In dit voorbeeld gebruiken we dezelfde DataFrame als hierboven en halen we de waarden uit de eerste rij (rij 0):
print(df.loc[0])pythonDe bovenstaande code geeft de waarden voor Alice weer, die in de eerste rij van het DataFrame staan:
Name Alice
Age 25
City Nottingham
Name: 0, dtype: objectIndexering met iloc[] (rij- en kolomnummers)
Een andere manier om toegang te krijgen tot specifieke elementen in uw DataFrame is via rij- en kolomnummers. Dit is waarschijnlijk de meest populaire manier om elementen in een DataFrame te lokaliseren. Om de numerieke index te gebruiken, hebt u het DataFrame-attribuut iloc nodig.
# Access the first row
print(df.iloc[0])
# Access the value in the first row and second column
print(df.iloc[0, 1])pythonDit is het resultaat bij het werken met iloc[]:
Name Alice
Age 25
City Nottingham
Name: 0, dtype: object
25Toegang tot individuele waarden
Als u slechts één waarde wilt opvragen, is de at een snelle, eenvoudige manier om dat te doen. Met deze indexer kunt u rijen en kolommen definiëren aan de hand van hun labels. Als u bijvoorbeeld wilt weten waar Bob woont, typt u ‘1’ voor de rij en ‘City’ voor de kolom:
print(df.at[1, 'City'])pythonHier krijgen we de uitvoer Londen.
Als alternatief kunt u de 20-indexer gebruiken, die op dezelfde manier werkt als at, maar de op gehele getallen gebaseerde kolompositie gebruikt in plaats van de naam. De onderstaande code levert hetzelfde resultaat op als het vorige voorbeeld:
print(df.iat[1, 2])pythonBooleaanse indexering
U kunt ook subsets van een DataFrame maken op basis van een voorwaarde. Dit staat bekend als Booleaanse indexering. De voorwaarde moet uitkomen op True of False en wordt rechtstreeks in de indexeringsoperator geplaatst. Als u bijvoorbeeld rijen wilt selecteren die personen bevatten die ouder zijn dan 30 jaar, kunt u de volgende code gebruiken:
# Select rows where Age is greater than 30
print(df[df['Age'] > 30])pythonDe enige persoon die ouder is dan 30 is Charlie, wat resulteert in de volgende uitvoer:
Name Age City
2 Charlie 35 Cardiff