Vad är data wrangling och varför är det viktigt att kunna i Python?
Att bearbeta data kallas data wrangling, data munging, data grunging eller data preparation i den engelska litteraturen. Syftet med att bearbeta data är att formatera informationen så att den kan analyseras. Detta moment är oerhört viktigt eftersom merparten av arbetstiden oftast spenderas för att bearbeta data. Inte sällan kan 90% (eller mer) av koden utgöras av moment som bearbetar data. Det är således oerhört viktigt att kunna detta på ett effektivt och robust sätt. Att selektera rader och kolumner är tveklöst två av de mest grundläggande uppgifterna. Att skapa nya variabler eller modifiera variabler är också essentiellt.
I Python finns alla nödvändiga funktioner för att bearbeta data. Tyvärr är dessa funktioner ofta krångliga att använda eller så resulterar de i kod som är svår att läsa. Utvecklare inom R‘s community noterade detta tidigt och tog fram flera bibliotek som underlättade data wrangling. Tveklöst har dplyr
varit det mest revolutionerande biblioteket, eftersom det introducerade ett helt nytt sätt att manipulera data. I dplyr
står enkelheten i fokus; med ett fåtal funktioner, vilka är enkla att använda, möjliggörs kraftfull bearbetning av data. Pythons community observerade att dplyr
blev mycket populärt och därför tog man fram motsvarande bibliotek till Python. Faktum är att inom kort publicerades minst 3 motsvarande bibliotek till Python: dfply
,pandas-ply
och plython
. För att förstå betydelsen av dessa bibliotek tar vi ett exempel.
Vi fortsätter med vår data frame från föregående övningar. Börja med att läsa in filen:
# Importera pandas för att använda funktionen read_csv import pandas as pd # Använd funktionen read_csv för att läsa in en fil från Internet df = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/rhc.csv")
I den filen finns en variabel som heter ca
, vilket står för cancer. Denna variabel har tre nivåer: “No”, “Yes”, “Metastatic”, vilket du kan undersöka genom att skriva:
df.ca.value_counts() # Resultat # No 4379 # Yes 972 # Metastatic 384
Vi vill nu beräkna medelvärdet av sadmedte
för vardera av dessa tre grupper och vi vill göra det för män och kvinnor separat. Variabeln sex
definierar män och kvinnor. Vi kommer göra detta med dfply
, vilket kräver att vi installerar biblioteket först. För att göra detta öppnas Terminal på Mac OS eller Command Prompt i Windows (se Introduktion till Python). Skriv pip install dfply
och tryck enter (se bild nedan).

Du får då ett meddelande om att biblioteket är installerat. Därefter aktiveras biblioteket i Spyder.
Detta görs genom att använda funktionen from
följt av *
, vilket aktiverar alla funktioner i biblioteket och vi slipper skriva dfply.
framför varje funktion vi använder.
from dfply import *
Nu är dfply
aktiverat och för att göra beräkningen skriver vi följande:
df >> group_by('ca', 'sex') >> summarize(medelvarde=X.sadmdte.mean()) # Resultat: # sex ca medelvarde # 0 Female Metastatic 11632.954774 # 1 Male Metastatic 11645.335135 # 2 Female No 11641.753720 # 3 Male No 11627.035391 # 4 Female Yes 11670.025316 # 5 Male Yes 11655.783362
Observera att vi använder >>
för att skapa en kedja av händelser. Koden börjar med df >> group_by('ca', 'sex')
vilket tolkas som “börja med df, sedan grupperar vi df på ca och därefter på sex“. Detta innebär att alla efterkommande funktioner kommer genomföras på subgrupper av ca och sex. Sedan fortsätter vi med summarize(medelvarde=X.sadmdte.mean()
, vilket innebär att vi skapar en sammanställning; denna inbegriper en ny variabel, medelvarde
, som är medelvärdet av sadmdte
. Observera att vi använder X
för att instruera Python att sadmdte
kommer från samma data frame som funktionen börjar med (df
).
Detta innebär att vi med en enda kodrad lyckats aggregera data på två variabler (ca, sex) och beräknat ett medelvärde för varje subgrupp i ca och sex. Det är således väldigt enkelt att bearbeta data i Python. I kommande kapitel kommer vi gå igenom de vanligaste och viktigaste metoderna för databearbetning. Vi kommer använda både inbyggda funktioner i Python samt dfply
.