Samengevat: voor een DataFrame geeft .shape een tuple terug met het aantal rijen en kolommen. Voor een Series geeft het het aantal rijen terug. Gebruik .shape om snel de grootte van je dataset te checken of om de resultaten van filteren en selecteren te verifiëren. Denk er ook aan dat .shape een attribuut is, dus je hebt geen haakjes nodig om het te benaderen.
Wil je alle voorbeeldcode in deze tutorial zelf eenvoudig draaien? Je kunt gratis een DataLab-werkboek aanmaken dat Python vooraf geïnstalleerd heeft en alle codevoorbeelden bevat.
Als je een DataFrame hebt en je wilt een paar specifieke rijen/kolommen uit dat DataFrame benaderen of selecteren, kun je vierkante haken gebruiken of andere geavanceerde methoden zoals loc en iloc.
Kolommen selecteren met vierkante haken
Stel nu dat je de kolom country uit het brics-DataFrame wilt selecteren. Om dit te doen, typ je brics en vervolgens het kolomlabel tussen vierkante haken.
Een kolom selecteren
country capital area population
BR Brazil Brasilia 8.516 200.40
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
SA South Africa Pretoria 1.221 52.98
brics["country"]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Name: country, dtype: object
Het type van het object controleren
Laten we met de functie type() controleren welk type object er wordt geretourneerd.
type(brics["country"])
pandas.core.series.Series
Zoals we in de bovenstaande output zien, hebben we hier te maken met een pandas Series! Je kunt een Series zien als een eendimensionale array die, net als een DataFrame, labels kan hebben.
Als je data wilt selecteren en in een DataFrame wilt houden, moet je dubbele vierkante haken gebruiken:
brics[["country"]]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Als we het type van deze output controleren, is het een DataFrame! Met maar één kolom, weliswaar.
type(brics[["country"]])
pandas.core.frame.DataFrame
De .shape-attribuut begrijpen
Laten we nu kijken naar het attribuut .shape. Het .shape-attribuut in pandas geeft snel inzicht in de structuur van een DataFrame of Series. Het retourneert een tuple die het aantal rijen en kolommen in het DataFrame aangeeft, of alleen het aantal rijen in een Series.
Voorbeeld: .shape gebruiken met een DataFrame
Kijken we nog eens naar ons DataFrame brics:
import pandas as pd
# Sample DataFrame
data = {
"country": ["Brazil", "Russia", "India", "China", "South Africa"],
"capital": ["Brasilia", "Moscow", "New Delhi", "Beijing", "Pretoria"],
"area": [8.516, 17.1, 3.286, 9.597, 1.221],
"population": [200.4, 143.5, 1252, 1357, 52.98],
}
brics = pd.DataFrame(data, index=["BR", "RU", "IN", "CH", "SA"])
# Check the shape
print(brics.shape)
Output:
(5, 4)
Dit vertelt ons dat het brics-DataFrame 5 rijen en 4 kolommen heeft.
Voorbeeld: .shape gebruiken met een Series
Wanneer je een enkele kolom uit het DataFrame selecteert, zoals de kolom country, is het resultaat een Series. Zo gedraagt .shape zich dan:
country_series = brics["country"]
print(country_series.shape)
Output:
(5,)
Hier heeft de Series 5 rijen en geen kolommen, omdat een Series eendimensionaal is.
Meerdere kolommen selecteren
Je kunt deze aanroep uitbreiden om twee kolommen te selecteren. Laten we country en capital proberen te selecteren.
brics[["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
Als je goed kijkt, plaats je eigenlijk een lijst met kolomlabels binnen een andere set vierkante haken en krijg je een sub-DataFrame met alleen de kolommen country en capital.
Rijen selecteren met vierkante haken
Vierkante haken kunnen meer dan alleen kolommen selecteren. Je kunt ze ook gebruiken om rijen, of observaties, uit een DataFrame te halen.
Voorbeeld
Je kunt alleen rijen selecteren met vierkante haken als je een slice opgeeft, zoals 0:4. Let op: je gebruikt hier de gehele indexen van de rijen, niet de rijlables!
Om de tweede, derde en vierde rij van het brics-DataFrame te krijgen, gebruiken we de slice van 1 tot en met 4. Onthoud dat het einde van de slice exclusief is en dat de index bij nul begint.
brics[1:4]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
Deze vierkante haken werken, maar bieden slechts beperkte functionaliteit. Idealiter willen we iets vergelijkbaars met 2D-Numpy-arrays, waar je ook vierkante haken gebruikt. De index, of slice, vóór de komma verwijst naar de rijen en de slice na de komma verwijst naar de kolommen.
Voorbeeld van een 2D-Numpy-array:
my_array[rows, columns]
Als je iets soortgelijks met pandas wilt doen, moet je kijken naar het gebruik van de functies loc en iloc.
-
loc: op label gebaseerd -
iloc: op geheel getal positie-gebaseerd
loc-functie
loc is een techniek om delen van je data te selecteren op basis van labels. Laten we naar het brics-DataFrame kijken en de rijen voor Rusland ophalen.
Om dit te bereiken, plaats je het label van interesse tussen vierkante haken na loc.
Rijen selecteren
brics.loc["RU"]
country Russia
capital Moscow
area 17.1
population 143.5
Name: RU, dtype: object
We krijgen een pandas Series met alle rij-informatie; onhandig genoeg staat die op verschillende regels. Om een DataFrame te krijgen, moeten we de string RU in een extra paar haken zetten. We kunnen ook meerdere rijen tegelijk selecteren. Stel dat je ook India en China wilt meenemen. Voeg die rijlables simpelweg toe aan de lijst.
brics.loc[["RU", "IN", "CH"]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
Het verschil tussen loc en gewone vierkante haken is dat je de selectie kunt uitbreiden met een komma en een specificatie van de kolommen van interesse.
Rijen en kolommen selecteren
Laten we de vorige aanroep uitbreiden zodat alleen de kolommen country en capital worden opgenomen. We voegen een komma toe en zetten de kolomlabels die we willen behouden op een rij. De doorsnede wordt geretourneerd.
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
Je kunt loc ook gebruiken om alle rijen te selecteren maar slechts een specifiek aantal kolommen. Vervang eenvoudig de eerste lijst met rijlables door een dubbele punt. Een slice van begin tot eind. Deze keer krijgen we alle rijen terug maar slechts twee kolommen.
Alle rijen en specifieke kolommen selecteren
brics.loc[:, ["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
iloc-functie
Met de functie iloc kun je pandas-DataFrames subsetten op basis van hun positie of index.
Rijen selecteren
Laten we dezelfde data en soortgelijke voorbeelden gebruiken als bij loc. We beginnen met de rij voor Rusland.
brics.iloc[[1]]
country capital area population
RU Russia Moscow 17.100 143.50
Om de rijen voor Rusland, India en China te krijgen, kun je nu een lijst met indexen 1, 2, 3 gebruiken.
brics.iloc[[1, 2, 3]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
Rijen en kolommen selecteren
Net als bij loc kunnen we met iloc ook zowel rijen als kolommen selecteren. Hier selecteren we de rijen voor Rusland, India en China en de kolommen country en capital.
brics.iloc[[1, 2, 3], [0, 1]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
Alle rijen en specifieke kolommen selecteren
Als je tot slot alle rijen wilt selecteren maar alleen de kolommen country en capital wilt behouden, kan dat zo:
brics.loc[:, [0, 1]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
loc en iloc lijken behoorlijk op elkaar. Het enige verschil is hoe je naar kolommen en rijen verwijst.
Interactief voorbeeld van het selecteren van een subset van data
In het volgende voorbeeld worden de autogegevens vanuit een CSV-bestand geïmporteerd als een Pandas DataFrame. Om alleen de kolom cars_per_cap uit cars te selecteren, kun je gebruiken:
cars['cars_per_cap']
cars[['cars_per_cap']]
De versie met enkele haken geeft een Pandas Series; de versie met dubbele haken geeft een Pandas DataFrame.
- Je gebruikt enkele vierkante haken om de kolom
countryvancarsals een Pandas Series af te drukken. - Gebruik daarna dubbele vierkante haken om de kolom
countryvancarsals een Pandas DataFrame af te drukken. - Gebruik ten slotte dubbele vierkante haken om een DataFrame af te drukken met zowel de kolommen
countryalsdrives_rightvancars, in die volgorde.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Print out country column as Pandas Series
print(cars['country'])
# Print out country column as Pandas DataFrame
print(cars[['country']])
# Print out DataFrame with country and drives_right columns
print(cars[['country', 'drives_right']])
Als we de bovenstaande code uitvoeren, krijgen we het volgende resultaat:
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
Name: country, dtype: object
country
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
country drives_right
US United States True
AUS Australia False
JPN Japan False
IN India False
RU Russia True
MOR Morocco True
EG Egypt True
Wil je meer leren over pandas? Bekijk dan deze video uit onze cursus Intermediate Python.
Deze content is afkomstig uit DataCamp’s cursus Intermediate Python door Hugo Bowne-Anderson.
Onderwerpen
