Datahantering#

Under det här avsnittet ska vi gå igenom hur man kan läsa av data från textfiler, fokuset för den här kursen kommer vara att läsa av från excelfiler.

Installera pandas#

Vi ska börja med att ladda ner vissa funktioner som vi behöver för att kunna hantera textfiler och kunna göra analyser av textfiler. Vi behöver installera både pandas och openpyxl i terminalen. pandas är ett bibliotek av olika funktioner som används för datahantering. openpyxl är en inbyggd modul som är kopplad till pandas för att kunna läsa av specifikt excelfiler.

Börja med att skriva följande i terminalen för att få pandas och openpyxl nedladdat:

pip install pandas openpyxl

Läsa av filer#

För att läsa av information från en excelfil i python är det viktigt att man skapar excelfilen i samma map som programmet. Då kan man låta python hitta den excelfilen genom att skriva in filnamnet. Annars hittar inte python den filen.

Skapa nu en fil i excel som du fyller i vilka kurser du läser och vilket betygspoäng som du har eller som din påhittade person har.

Kurs

Betygspoäng

Svenska 1

12,5

Matematik 1c

15

Engelska 5

20

Fysik 1

12,5


Om man vill räkna om ett betyg till motsvarande betyg kan man följa tabellen nedan.

Betyg

Betygspoäng

A

20

B

17,5

C

15

D

12,5

E

10

F

0

Efter att en fil är skapad är det viktigt att man vet namnet på filen, det är dessutom väldigt viktigt att man sparar och stänger filen innan man vill köra programmet.

För att läsa av en textfil börjar man först med att importera pandas längst upp i programmet.

import pandas as pd

Därefter om man vill läsa av en textfil kan man den inbyggda funktionen read_excel.

df = pd.read_excel("data.xlsx")

Variabeln df lagrar nu datan från excel i en så kallad DataFrame. I variabeln df har alla kolumner lagrats i flera olika listor. Om vi vill få åtkomst till en specifik kolumn kan vi skriva:

list_kolumn = df["Kolumnnamn"]

Nu är all data från kolumnen "Kolumnnamn"nu lagrats i listan list_kolumn. Då kan nu hantera all data från denna kolumn genom att använda inbyggda listfunktioner.

Projektuppgift med datahantering - Betygsprogram#

Uppgiften är att bygga ett program som räknar ut ditt meritvärde på gymnasiet. Vi ska räkna ut det genom att läsa av en excelfil med betygen och sedan räkna ut meritvärdet.

Steg 1#

Skapa excelfilen och fyll i tabellen som vi gjorde tidigare. Spara filen i samma mapp som programmet.

Steg 2#

Importera pandas och openpyxl längst upp i programmet.

Steg 3#

Läs av filen och spara informationen i ett DataFrame som heter df.

Steg 4#

Skapa funktionen def poäng(betyg): som tar en lista med betyg som bokstav och räknar om det från en bokstav till ett poäng enligt tabellen som beskrevs längre upp. Returnerar poängen.

Steg 5#

Skapa funktionen def merit(betygspoäng, meritpoäng): som tar alla betyg samt meritpoängen och returnerar eritvärdet.

Steg 6#

Testa att ändra betygen och se om du kan räkna ut meritvärdet genom att anropa funktionen merit.

Steg 7#

Gå till studera.nu och titta upp några utbildningar som du vill läsa. Skapa två nya kolumner i excelfilen ”Program” och ”Meritvärde”. I kolumnen program fyller du i vilka program som du vill läsa. I kolumnen meritvärde fyller du i meritvärdet som krävs för att komma in på utbildningen.

Titta i tabellen nedan som inspiration för hur ni ska fylla i excelfilen.

Program

Meritvärde

Läkarprogrammet

20

Sjuksköterskaprogrammet

12,5

Ämneslärarprogrammet

10

Veterinärprogrammet

21,5

Socionomprogrammet

15

Ekonomprogrammet

16

Steg 8#

Skapa en funktion def antagen(betyg, krav) som tar ditt meritvärde och en lisa över betygskraven. Funktionen returnerar vilka utbildningar som du kommer in på.

Projektuppgift med datahantering - Matkort#

Uppgiften är att göra ett program som håller koll på hur mycket du kan spendera på ditt matkort.

Steg 1#

Skapa filen maktort.py i din lokala map på skrivbordet.

Steg 2#

Skapa ett exceldokument som kallas matkort.xlsx. Fyll i kolumnerna med Dag och Kronor. Fyll i alla dagar du har varit i skolan den här månaden, fyll i datumen. Fyll sedan i andra kolumnen hur mycket som du spenderade den dagen på ditt matkort. Titta på exemplet nedan. Spara filen i samma mapp som programmet.

Dag

Kronor

Måndag 4/11

70

Tisdag 5/11

85

Torsdag 7/11

65

Fredag 8/11

50

Måndag 11/11

70

Tisdag 12/11

80

Steg 3#

Importera pandas och openpyxl längst upp i programmet.

Steg 4#

Läs av filen och spara informationen i ett DataFrame som heter df.

Steg 5#

Skapa funktionen def saldo(dagar, kronor): som tar en lista med alla kronor som du har spenderat den månaden. Den tar även mot en ett värde på hur många skoldagar det är den månaden. Funktionen ska returnera hur mycket pengar du har kvar på ditt matkort. Följ formeln nedan för att veta vad saldot är.

\(saldo= 70 \cdot antalskoldagar - spenderat\)

Saldo betyder hur mycket som finns kvar på kortet, antal dagar betyder hur många skoldagar som månaden består av, spenderat betyder summan av alla kostnader som finns i listan över kronor.

För att anropa den här funktionen behöver du skapa två variabler längst ner i programmet, nämligen en variabel som heter skoldagar som är antalet skoldagar, samt en variabel som heter kronor_lista som är en lista över alla tal i kronorkolumnen i excelfilen.

Steg 6#

Skapa en funktion def spendera(kronor, pengar_kvar) som tar listan över alla kronor, samt vad saldot är. Funktionen ska returnera hur mycket du ska spendera i snitt varje dag till starten av nästa månad.

För att anropa den här funktionen behöver du ge funktionen listan kronor_listasamt saldot i form av en lokal variabel där du anropar saldo-funktionen.

Steg 7#

Testa att ändra i excelfilen och se om allting stämmer.

Steg 8#

Skapa en funktion def main(). Mainfunktionen ska vi göra för att det blir med pedagogiskt och enklare att använda programmet. Börja med att skapa funktionen och kopiera följande kod:

def main():
  print("Klicka 1 om du vill kolla saldot")
  print("Klicka 2 om du vill kolla hur mycket du ska spendera i snitt varje dag resten av månaden")
  print("Klicka 3 om du vill avsluta programmet")

Steg 9#

Fyll sedan på funktionen så att om användaren anger 1 som input ska programmet visa saldot.

Steg 10#

Om användaren anger 2 ska programmet visa hur mycket du ska spendera i snitt varje dag resten av månaden.

Steg 11#

När du anger 3 ska programmet avsluta programmet. Använd då bara att om 3 anges så returneras ingenting.

Steg 12#

När du får ett svar från main funktionen, kör om mainfunktionen så du kan fortsätta programmet.

Steg 13#

Anropa mainfunktionen längst ner i programmet.