Software Engineering College 5 -managing data

34
College 4 – Managing Data

Transcript of Software Engineering College 5 -managing data

Page 1: Software Engineering College 5 -managing data

College 4 – Managing Data

Page 2: Software Engineering College 5 -managing data

Hoofdstukken

Kortom: Wat is er blijven hangen van het vorige college?

Page 3: Software Engineering College 5 -managing data

Het doel van dit college is• Data kunt ombouwen naar nieuwe bruikbare

data• Datasets kunt scheiden zodat je je reproductive

research kunt uitvoeren• Aggregate functions met dplyr• Window functions in R (lead,lag,cumsum,etc)

Page 4: Software Engineering College 5 -managing data

Window functions

Time serie changes

Opdracht volgende week

Managing data volgens Pr Dt Sc

Page 5: Software Engineering College 5 -managing data

Hfst4 managing data

Page 6: Software Engineering College 5 -managing data

MANAGING DATA1. Cleaning / missing data

1. To drop or not to drop 2. Fixen categorische variabelen3. Missing in numerieke data4. Random missing values5. Systematic missing values (zie exploring data!!!!)

2. Data transformations1. Normaliseren 2. Converteren in ranges3. Rescalen op een index (timeseries)4. Transformers voor gevorderden

3. Samples

Page 7: Software Engineering College 5 -managing data

Missing data – to drop or not to drop

Page 8: Software Engineering College 5 -managing data

Missing data – niet droppen maar re-mappen

Let op, je stop dit in een nieuwe variabele zodat je altijd nog bij je originele data kunt.

Page 9: Software Engineering College 5 -managing data

Random missing data – dan maar het gemiddelde

Hoe stel je vast dat een variabele random mist?

Let op welke voorwaarden stel je impliciet (liefst natuurlijk expliciet) als je de NA vervang door het gemiddelde?

Zou je ook een andere waarde kunnen toekennen op basis van een 2e variabele? Hoe?Denk aan exploring data en dan de pairs functie

Page 10: Software Engineering College 5 -managing data

Systematisch missende data kun je omkatten naar een nieuwe categorische variabele

Page 11: Software Engineering College 5 -managing data

Autobots, transform your

data

Page 12: Software Engineering College 5 -managing data

Hoeveel modaal verdien je?Nou 2x model voor de provincie waar ik woon. (Drenthe vs N-Holland)

Page 13: Software Engineering College 5 -managing data

Van continu naar discreetFor some continuous variables, their exact value matters less than whether they fall into a certain range.

Page 14: Software Engineering College 5 -managing data

Centreren van dataNormaliseren en centreren van data is handig als de relatieve waarden in een dataset meer zeggen dan de absolute waarden

For example, you might be less interested in a customer’s absolute age than you are in how old or young they are relative to a “typical” customer.

Page 15: Software Engineering College 5 -managing data

Normaliseren

Is een 35 jarige klant jong?

Page 16: Software Engineering College 5 -managing data

En uiteraard normaliseren

Let op er zijn uiteraard ook packages die dit automatisch doen (eg scales)

Page 17: Software Engineering College 5 -managing data

Sampling DATA

Met rando variable reproducible research!!!!!

Waarom prefereren we de dummy variabele boven de sample functie?

Page 18: Software Engineering College 5 -managing data

Toch even de sampling functie laten zien

Je weet toch…. Gewoon omdat het kan ;)

sample_n(flights, 10)#> # A tibble: 10 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 7 8 2205 2019 106 103#> 2 2013 9 12 1602 1545 17 NA#> 3 2013 11 4 1459 1459 0 1642#> 4 2013 10 25 1354 1350 4 1534#> ... with 6 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>sample_frac(flights, 0.01)#> # A tibble: 3,368 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 5 14 850 850 0 1237#> 2 2013 11 8 832 840 -8 1016#> 3 2013 12 1 1155 1155 0 1309#> 4 2013 1 1 929 925 4 1220#> ... with 3,364 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>

Page 19: Software Engineering College 5 -managing data

Sampling data met een entiteit meermaals in de datasetStel je hebt een dataset met transacties van personen/huishoudens dan wil je niet samplen op de transacties maar op de personen/huishoudens. Hoe zou je dat doen?

Page 20: Software Engineering College 5 -managing data

GEVORDERDE DATA TRANSFORMATIES

Page 22: Software Engineering College 5 -managing data

%>%

Page 23: Software Engineering College 5 -managing data

library(nycflights13)dim(flights)#> [1] 336776 19head(flights)#> # A tibble: 6 x 19#> year month day dep_time sched_dep_time dep_delay arr_time#> <int> <int> <int> <int> <int> <dbl> <int>#> 1 2013 1 1 517 515 2 830#> 2 2013 1 1 533 529 4 850#> 3 2013 1 1 542 540 2 923#> 4 2013 1 1 544 545 -1 1004#> ... with 2 more rows, and 12 more variables: sched_arr_time <int>,#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,#> minute <dbl>, time_hour <time>

Page 24: Software Engineering College 5 -managing data

De 1e functie die de data scientist uitvoert

Hebben we nu te maken met een timeseries of niet?

Page 25: Software Engineering College 5 -managing data

De 2e functie die de data scientist uitvoert

Wat valt jullie op?

Page 26: Software Engineering College 5 -managing data

EVEN TIMESERIES MAKEN MET DPLYRairportcounts <- flights %>% filter(dest %in% c('ALB', 'BDL', 'BTV')) %>% group_by(year, month, dest) %>% summarise(count = n())

library(lubridate)airportcounts <- airportcounts %>% mutate(Date = ymd(paste(year, "-", month, "-01", sep="")))head(airportcounts) # list only the first six observationsxyplot(count ~ Date, groups=dest, type=c("p","l"), lwd=2, auto.key=list(columns=3), xlab="Year", ylab="Number of flights per month", data=airportcounts)

1

2

3

Page 27: Software Engineering College 5 -managing data

VAN TRANSACTIES NAAR PROPERTIEScarrier_properties<-flights %>% select(3:19) %>% group_by(carrier) %>% summarise(aantal_vlucht=n(), aantal_vliegtuigen=length(unique(tailnum)), aantal_vertrek=length(unique(origin)), aantal_bestemming=length(unique(dest)), gem_afstand=mean(distance), gemiddelde_delay=mean(arr_delay,na.rm=TRUE), gemiddelde_delay=mean(dep_delay,na.rm=TRUE), aantal_delay=sum(arr_delay>0,na.rm=TRUE), aantal_niet=sum(arr_delay<=0,na.rm=TRUE), onbekend=sum(is.na(arr_delay),na.rm=TRUE) )

Page 28: Software Engineering College 5 -managing data

carrier_properties<-flights %>% select(3:19) %>% group_by(carrier) %>% summarise(aantal_vlucht=n(), aantal_vliegtuigen=length(unique(tailnum)), aantal_vertrek=length(unique(origin)), aantal_bestemming=length(unique(dest)), gem_afstand=mean(distance), gemiddelde_delay=mean(arr_delay,na.rm=TRUE), gemiddelde_delay=mean(dep_delay,na.rm=TRUE), aantal_delay=sum(arr_delay>0,na.rm=TRUE), aantal_niet=sum(arr_delay<=0,na.rm=TRUE), onbekend=sum(is.na(arr_delay),na.rm=TRUE) )

Page 29: Software Engineering College 5 -managing data

WINDOW FUNCTIONS

Page 30: Software Engineering College 5 -managing data

A window function is a variation on an aggregation function. Where an aggregation function, like sum() and mean(), takes n inputs and return a single value, a window function returns n values. The output of a window function depends on all its input values, so window functions don’t include functions that work element-wise, like + or round().

Window functions include variations on aggregate functions, like cumsum() and cummean(),

functions for ranking and ordering, like rank(),

and functions for taking offsets, like lead() and lag().

Window functions

https://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html

Page 31: Software Engineering College 5 -managing data

https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/

nextdelay<-flights %>% select(1:3,6,tailnum)%>% group_by(tailnum) %>% arrange(year,month,day) %>% mutate(next_flight_delay=lead(dep_delay))

lead/lag voor delay

LEAD LAG IS SUPER BELANGRIJK … EN HANDIG

Page 32: Software Engineering College 5 -managing data

https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/

Cumsum voor delay opbouw

# cum delay flights$arr_delay <-ifelse(is.na(flights$arr_delay),0,flights$arr_delay)

cumdelay<-flights %>% select( 1:3,carrier,arr_delay) %>% group_by(carrier) %>% arrange(year,month,day) %>% mutate(cummulatief_delay=cumsum(arr_delay)) %>% filter(carrier =="9E")

cumdelay <-data.frame(cumdelay,nr=1:length(cumdelay$year))

cumdelay %>% ggplot(aes(x=nr,y=cummulatief_delay)) + geom_line()

Page 33: Software Engineering College 5 -managing data

https://www.r-bloggers.com/cross-validation-for-predictive-analytics-using-r/

Cumsum voor delay opbouw

# cum delay flights$arr_delay <-ifelse(is.na(flights$arr_delay),0,flights$arr_delay)

cumdelay<-flights %>% select( 1:3,carrier,arr_delay) %>% group_by(carrier) %>% arrange(year,month,day) %>% mutate(cummulatief_delay=cumsum(arr_delay)) %>% filter(carrier =="9E")

cumdelay <-data.frame(cumdelay,nr=1:length(cumdelay$year))

cumdelay %>% ggplot(aes(x=nr,y=cummulatief_delay)) + geom_line()

Page 34: Software Engineering College 5 -managing data

Opdracht komende 2 weken

1. ETL / Exploreer / Manage de nycflights13 data2. Beschouw de dataset als timeseries van diverse variabelen en toon met grafieken aan of er pieken en

dalen in de variabele zijn3. Leg uit welke carrier het beste presteert naar de door jullie geoperationaliseerde normen4. Zijn er vliegtuigen die significant beter presteren dan andere, bijvoorbeeld door goed presterende

teams?5. Welk verband is er te vinden tussen te laat/vroeg vertrekken en te laat/vroeg aankomen?6. Zijn er carriers significant die sneller vliegen dan andere carriers (op een zelfde lijn)?7. Welk effect heeft het weer op het verloop van de vlucht?8. Als jij CEO van een carrier zou moeten adviseren over zijn business, wat zou je adviseren over de

volgende aspecten (toon met grafieken aan waarom)1. Aantal verschillende type vliegtuigen in de vloot2. Aantal origin/destinations in portfolio3. Hoe om te aan met seizoensinvloeden

Tips:• Wat doe je met de NA’s en waarom? Zijn alle variabelen van de juiste class?• Beschouw je negatieve delay (vroeger vertrekken) als dezelfde variabele als pos delay?• Welke wijze zou je delay’s kunnen ombouwen naar categorische variabelen• Steel jat en ontleen zolang je de code die je gebruikt zelf kunt uitleggenBronnen:https://cran.r-project.org/web/packages/nycflights13/nycflights13.pdf https://www.google.nl/search?q=exploring+nyc%EF%AC%82ights13