Cursus
Je zit nooit vast aan alleen de data die je krijgt. Je kunt namelijk nieuwe kolommen toevoegen aan een DataFrame. Dit wordt ook wel transformeren, muteren of feature engineering genoemd.
Je kunt nieuwe kolommen helemaal zelf aanmaken, maar het is ook gebruikelijk om ze af te leiden van andere kolommen, bijvoorbeeld door kolommen bij elkaar op te tellen of door de eenheden te veranderen.
Een kolom afleiden
Met een dataset over honden wil je bijvoorbeeld een nieuwe kolom toevoegen aan je DataFrame met de lengte van elke hond in meters in plaats van centimeters.
Links van het gelijkteken gebruik je rechte haken met de naam van de nieuwe kolom die je wilt maken, in dit geval height_m. Rechts staat de berekening.
dogs["height_m"] = dogs["height_cm"] / 100
print(dogs)
name breed color height_cm weight_kg date_of_birth height_m
0 Bella Labrador Brown 56 24 2013-07-01 0.56
1 Charlie Poodle Black 43 24 2016-09-16 0.43
2 Lucy Chow Chow Brown 46 24 2014-08-25 0.46
3 Cooper Schnauzer Gray 49 17 2016-09-16 0.49
4 Max Labrador Black 59 29 2016-09-16 0.59
5 Stella Chihuahua Tan 18 2 2016-09-16 0.18
6 Bernie St. Bernard White 77 74 2016-09-16 0.77
Let op: zowel de bestaande als de afgeleide kolom staan in het aangepaste dataframe.
Een kolom toevoegen
In dit voorbeeld bereken je de doggy mass index en voeg je die toe als kolom aan je dataframe. BMI staat voor body mass index, wat wordt berekend als het gewicht in kilogram gedeeld door de lengte in meters in het kwadraat.
dogs["height_m"] = dogs["weight_kg"] / dogs["height_m"] ** 2
print(dogs.head())
name breed color height_cm weight_kg date_of_birth height_m bmi
0 Bella Labrador Brown 56 24 2013-07-01 0.56 76.530612
1 Charlie Poodle Black 43 24 2016-09-16 0.43 129.799892
2 Lucy Chow Chow Brown 46 24 2014-08-25 0.46 113.421550
3 Cooper Schnauzer Gray 49 17 2016-09-16 0.49 70.803832
4 Max Labrador Black 59 29 2016-09-16 0.59 83.309394
Ook nu staat de nieuwe kolom links van het gelijkteken, maar deze keer bevat de berekening twee kolommen.
Een kolom toevoegen met meerdere bewerkingen
De echte kracht van pandas komt naar voren wanneer je alle vaardigheden combineert die je tot nu toe hebt geleerd. Laten we de namen achterhalen van slanke, lange honden.
Om te beginnen definieer je de slanke honden als de subset met een BMI lager dan 100. Vervolgens sorteer je op lengte in aflopende volgorde om de langste slanke honden bovenaan te krijgen.
Tot slot bewaar je deze keer alleen de kolommen die je nodig hebt.
bmi_lt_100 = dogs[dogs["bmi"] < 100]
bmi_lt_100_height = bmi_lt_100.short_values("height_cm", ascending=False)
bmi_lt_100_height[["name", "height_cm", "bmi"]]
name height_cm bmi
4 Max 59 83.309394
0 Bella 56 76.530612
3 Cooper 49 70.803832
5 Stella 18 61.728395
Hier zie je dat Max de langste hond is met een BMI onder de 100.
Interactief voorbeeld
In het onderstaande voorbeeld voeg je een nieuwe kolom toe aan DataFrame homelessness met de naam total, die de som bevat van de kolommen individuals en family_members. Voeg daarna nog een kolom toe aan homelessness, genaamd p_individuals, met het aandeel van de dakloze mensen per staat dat uit individuen bestaat. Print tot slot het homelessness-dataframe.
# Add total col as sum of individuals and family_members
homelessness["total"] = homelessness["individuals"] + homelessness["family_members"]
# Add p_individuals col as proportion of individuals
homelessness["p_individuals"] = homelessness["individuals"] / homelessness["total"]
# See the result
print(homelessness)
Als we bovenstaande code uitvoeren, krijgen we het volgende resultaat:
region state individuals family_members state_pop total p_individuals
0 East South Central Alabama 2570.0 864.0 4887681 3434.0 0.748
1 Pacific Alaska 1434.0 582.0 735139 2016.0 0.711
2 Mountain Arizona 7259.0 2606.0 7158024 9865.0 0.736
3 West South Central Arkansas 2280.0 432.0 3009733 2712.0 0.841
4 Pacific California 109008.0 20964.0 39461588 129972.0 0.8
...
48 South Atlantic West Virginia 1021.0 222.0 1804291 1243.0 0.821
49 East North Central Wisconsin 2740.0 2167.0 5807406 4907.0 0.558
50 Mountain Wyoming 434.0 205.0 577601 639.0 0.679
Bekijk ook DataCamp's tutorial over Kolommen verwijderen in pandas.
Wil je meer leren over het toevoegen van nieuwe kolommen in pandas? Bekijk dan deze video uit onze cursus Data Manipulation with pandas.
Deze content is afkomstig uit DataCamp’s cursus Data Manipulation with pandas van Maggie Matsui en Richie Cotton.
