Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Pandas 1

Oppgave 1: Kyr og mjølkeproduksjon

I denne oppgava skal vi se på melkeproduksjon hos kyr. Dataene er fiktive.

a) Lag ei Pandas-dataramme med utgangspunkt i dataene under, som skal vise kuas gjennomsnittlige daglige melkeproduksjon (i kg), alder og mengde fôr.

melk = [21.5,22.6,22.4,23.1,23.2,23.1,23.4,23.1,23.2,23.9,24.0,25.0,25.2,25.7]
alder = [3,4,4,4,5,5,5,6,6,7,7,8,8,8]
foret = [1,1,1,1,2,2,2,2,3,3,3,3,4,4]

b)
Bruk .head() og .tail() til å undersøke hvordan starten og slutten av datasettet du har lagd ser ut. Vi kan også skrive ut hele dataramma som den er, for å se hele.

c) Lage ny kolonne basert på en annen kolonne.

Kumelk er litt tyngre enn vann, 1 liter melk kan for eksempel veie ca. 1.032. For å gå fra kilo til liter må vi gange med (ca.) 0.9689. Lag en ny kolonne i datarammen som heter melk_liter. Bruk .head() for å ta en titt på endringene.

d) Endre eksisterende kolonne

Av en eller annen grunn vil vi ha alderen til kyra i måneder istedenfor år. Skriv over kolonnen med alderen med den nye alderen. Bruk .head() for å ta en titt på endringene.

e) Legge til en helt ny kolonne.

Kyr har ofte navn, og det finnes registre over kunavn. Vi ser for oss at vi av en eller annen grunn (ikke fordi det er nyttig til regresjon) legger inn navna på kyra. Lag en ny kolonne med navna.

['Trulte', 'Betty', 'Stjerne', 'Rødlin', 'Golin', 'Litago', 'Bliros', 'Morlik', 'Dokka', 'Fagerlin', 'Rosa', 'Litago', 'Dagros', 'Rosa']

(Navn tatt fritt fra listen fra Tines kukontroll i 2004: https://www.regjeringen.no/globalassets/upload/kilde/ld/prm/2004/0596/ddd/pdfv/215710-ku-navn_2004-ti_pa_topp-pm.pdf)

Hvis du vil gjøre noen regresjonsoppgaver med dette datasettet kan du se på oppgaven Regresjon 1 (under utvikling).

Vis løsningsforslag

a)

import pandas

# Vi har tre lister vi kan bruke
melk = [21.5,22.6,22.4,23.1,23.2,23.1,23.4,23.1,23.2,23.9,24.0,25.0,25.2,25.7]
alder = [3,4,4,4,5,5,5,6,6,7,7,8,8,8]
foret = [1,1,1,1,2,2,2,2,3,3,3,3,4,4]

# Vi kaller variabelen som holder på dataramma for "kyr"
# DataFrame tar ei ordbok. Nøkkelverdiene i ordboka blir navnet på kolonnene (series).

kyr = pandas.DataFrame({"melk":melk,
                       "alder":alder,
                       "fôr":foret})

b)

Head og tail viser oss de fem første eller siste elementene. Det er praktisk hvis vi bare vil ta en kjapp titt på hvordan kolonnene ser ut, eller på noen av dataene.

print(kyr.head())
print(kyr.tail())
print(kyr)
   melk  alder  fôr
0  21.5      3    1
1  22.6      4    1
2  22.4      4    1
3  23.1      4    1
4  23.2      5    2

    melk  alder  fôr
9   23.9      7    3
10  24.0      7    3
11  25.0      8    3
12  25.2      8    4
13  25.7      8    4

    melk  alder  fôr
0   21.5      3    1
1   22.6      4    1
2   22.4      4    1
3   23.1      4    1
4   23.2      5    2
5   23.1      5    2
6   23.4      5    2
7   23.1      6    2
8   23.2      6    3
9   23.9      7    3
10  24.0      7    3
11  25.0      8    3
12  25.2      8    4
13  25.7      8    4

c)
Vi lager en ny kolonne (series) ved å spesifiere et nytt kolonnenavn (her: "melk_liter"), og så

kyr["melk_liter"] = kyr["melk"] * 0.9689

print(kyr.head())

Output:

   melk  alder  fôr  melk_liter
0  21.5      3    1    20.83135
1  22.6      4    1    21.89714
2  22.4      4    1    21.70336
3  23.1      4    1    22.38159
4  23.2      5    2    22.47848

d)
Vi overkjører den eksisterende kolonnen ved å si at samme nøkkelverdi skal ha verdiene til samme kolonne ganga med 12.

kyr["alder"] = kyr["alder"] * 12

print(kyr.head())

Output:

   melk  alder  fôr  melk_liter
0  21.5     36    1    20.83135
1  22.6     48    1    21.89714
2  22.4     48    1    21.70336
3  23.1     48    1    22.38159
4  23.2     60    2    22.47848

e)
For å legge til helt nye kolonner kan vi gjøre som når vi skal legge til en kolonne basert på en tidligere, bare at vi spesifiserer hele lista med verdier.

kyr["navn"] = ['Trulte', 'Betty', 'Stjerne', 'Rødlin', 'Golin', 'Litago', 'Bliros', 'Morlik', 'Dokka', 'Fagerlin', 'Rosa', 'Litago', 'Dagros', 'Rosa']

print(kyr.head())
   melk  alder  fôr  melk_liter     navn
0  21.5     36    1    20.83135   Trulte
1  22.6     48    1    21.89714    Betty
2  22.4     48    1    21.70336  Stjerne
3  23.1     48    1    22.38159   Rødlin
4  23.2     60    2    22.47848    Golin