Εισαγωγή
To Kaggle είναι από τις πιο γνωστές πλατφόρμες αναλυτών / επιστημόνων δεδομένων μιας και έχει πάνω από 10 εκατομμύρια χρήστες (Heads or Tails, 2020). Εκτός από αυτό, το Kaggle προσφέρει πάρα πολλές λειτουργίες, όπως: - Δημιουργία άρθρων που περιέχουν εκτελέσιμο κώδικα καθώς και τα αποτελέσματα αυτού (γραφήματα, στατιστικά αποτελέσματα κτλ.) - Επικοινωνία χρηστών μέσω του φόρουμ συζήτησης και επίλυσης αποριών - Προσφορά αρκετού υλικού επιμόρφωσης των χρηστών και διάφορων μαθημάτων, όπου τα περισσότερα βασίζονται στη Python και σε βιβλιοθήκες της για οπτικοποίηση δεδομένων, θέματα ανάλυσης δεδομένων, μηχανικής και βαθιάς μάθησης - Πολλούς διαγωνισμούς μηχανικής / βαθιάς μάθησης στους οποίους μπορεί να συμμετέχει ο χρήστης
Αξίζει να σημειωθεί ότι υπάρχουν και άλλες παρόμοιες πλατφόρμες με το Kaggle, ωστόσο καμία τους δεν έχει ούτε τη αντίστοιχη βάση χρηστών, ούτε προσφέρει αντίστοιχες λειτουργίες. Μία εναλλακτική του Kaggle μπορεί να θεωρηθεί το DrivenData, όσον αφορά το κομμάτι των διαγωνισμών. Προφανώς, δεν μπορείς να δημοσιεύσεις δικό σου άρθρα και στη προαναφερόμενη πλατφόρμα συμμετέχουν αρκετά λιγότεροι χρήστες.
Η έρευνα μηχανικής μάθησης και επιστήμης δεδομένων (Kaggle Machine Learning & Data Science Survey) είναι μία έρευνα η οποία υλοποιείται σε ετήσια βάση από την ίδια τη πλατφόρμα. Οι χρήστες της απαντάνε σε διάφορα δημογραφικά στοιχεία και οι χρήστες αναλύουν τα δεδομένα σε μία μορφή διαγωνισμού. Σε αυτό το άρθρο θα κάνω μία ανάλυση για τα δεδομένα της έρευνας του 2021, συγκρίνοντας τα χαρακτηριστικά των Ελλήνων χρηστών της πλατφόρμας με αυτά των υπολοίπων.
Προετοιμασία
Εισαγωγή βιβλιοθηκών
Σε αυτό το άρθρο θα χρειαστώ να εισάγω και να τροποποιήσω τα δεδομένα μου, συνεπώς η σουίτα πακέτων του tidyverse κρίνεται απαραίτητη μιας και θα αξιοποιήσω λειτουργίες από πακέτα όπως το readr, το dplyr & το tidyr. Ο όγκος των δεδομένων είναι τεράστιος που μας δίνει αρκετές επιλογές ανάλυσης και μας δίνεται η ευκαιρία να οπτικοποιήσουμε αρκετά δεδομένα, μέσω του πακέτου highcharter. Τέλος, σε μεταβλητές οι οποίες έχουν αρκετές τιμές (π.χ. χώρες) ενδεχομένως να χρειαστεί να αναλύσω τα δεδομένα μου και σε πίνακες και για αυτό το λόγο ενδείκνυται η χρήση πινάκων μέσω των πακέτων reactable ή reactablefmtr.
Εισαγωγή δεδομένων
Το Kaggle μας προσφέρει το σύνολο των δεδομένων σε ένα αρχείο csv, συνεπώς θα χρειαστώ την εντολή read_csv
από το πακέτο readr. Θα φορτώσω το αντίστοιχο σύνολο δεδομένων ονομάζοντάς το kaggle_2021. Σε αυτό το σύνολο περιλαμβάνεται στη πρώτη σειρά και η ερώτηση που έθεσε στους χρήστες η οποία καλό θα ήταν να μην τη συμπεριλάβω για να διευκολύνω την ανάλυσή μου.
Eπανακωδικοποίηση δεδομένων
Σε αυτό το σημείο χρειάζεται να κάνω ορισμένα βήματα πριν ξεκινήσω. Με δεδομένο ότι η ανάλυσή μου έχει ως κύριο σκοπό να συγκρίνει τα χαρακτηριστικά των Ελλήνων χρηστών με των υπολοίπων χρηστών θα πρέπει να διακρίνω τα δεδομένα με αυτό το κριτήριο. Υπάρχουν δύο τρόποι με τους οποίους μπορείς να γίνει αυτό:
- Δημιουργία νέας μεταβλητής και ομαδοποίηση δεδομένων
- Φιλτράρισμα και διαχωρισμός συνόλου δεδομένων σε δύο υποσύνολα (Ελλήνων και ξένων χρηστών)
Με οποιονδήποτε από τους δύο τρόπους θα είμαστε σε θέση να συγκρίνουμε βασικά χαρακτηριστικά των χρηστών.
Κώδικας
kaggle_2021$Q2 <- kaggle_2021$Q2 |>
fct_recode(
"Άνδρας" = "Man",
"Μη δυαδικό" = "Nonbinary",
"Άλλο" = "Prefer not to say",
"Άλλο" = "Prefer to self-describe",
"Γυναίκα" = "Woman"
)
kaggle_2021$Q1 <- kaggle_2021$Q1 |>
fct_recode(
"55+" = "55-59",
"55+" = "60-69",
"55+" = "70+"
)
kaggle_2021$Q3_iso2c <- countrycode::countrycode(kaggle_2021$Q3, "country.name.en", "iso2c") |>
fct_na_value_to_level("Άλλο")
kaggle_2021$Q3 <- countrycode::countrycode(kaggle_2021$Q3, "country.name.en", "cldr.name.el") |>
fct_na_value_to_level("Άλλο")
kaggle_2021$Q4 <- kaggle_2021$Q4 |>
fct_recode(
"Προπτυχιακό" = "Bachelor’s degree",
"Διδακτορικό" = "Doctoral degree",
"Άλλο" = "I prefer not to answer",
"Μεταπτυχιακό" = "Master’s degree",
"Απόφοιτος Λυκείου" = "No formal education past high school",
"Διδακτορικό" = "Professional doctorate",
"Μεταλυκειακές σπουδές" = "Some college/university study without earning a bachelor’s degree"
)
kaggle_2021$Q4 <- factor(kaggle_2021$Q4,
levels = c(
"Απόφοιτος Λυκείου", "Μεταλυκειακές σπουδές",
"Προπτυχιακό", "Μεταπτυχιακό", "Διδακτορικό",
"Άλλο"
)
)
kaggle_2021$Q5 <- kaggle_2021$Q5 |>
fct_recode(
"Αναλυτής Επιχειρήσεων" = "Business Analyst",
"Άνεργος" = "Currently not employed",
"Αναλυτής Δεδομένων" = "Data Analyst",
"Μηχανικός Δεδομένων" = "Data Engineer",
"Επιστήμονας Δεδομένων" = "Data Scientist",
"Μηχανικός Βάσης Δεδομένων" = "DBA/Database Engineer",
"Υπεύθυνος Σχέσεων/Υποστήριξης Προγραμματιστών" = "Developer Relations/Advocacy",
"Μηχανικός Μηχανικής Μάθησης" = "Machine Learning Engineer",
"Άλλο" = "Other",
"Project Manager" = "Program/Project Manager",
"Μηχανικός Έρευνας" = "Research Scientist",
"Μηχανικός Λογισμικού" = "Software Engineer",
"Στατιστικός" = "Statistician",
"Φοιτητής" = "Student"
)
## Recoding kaggle_2021$Q6
kaggle_2021$Q6 <- kaggle_2021$Q6 |>
fct_recode(
"< 1" = "< 1 years",
"1-3" = "1-3 years",
"10-20" = "10-20 years",
"20+" = "20+ years",
"3-5" = "3-5 years",
"5-10" = "5-10 years",
"0" = "I have never written code"
)
kaggle_2021$Q11 <- kaggle_2021$Q11 |>
fct_recode(
"Πλατφόρμα Cloud" = "A cloud computing platform (AWS, Azure, GCP, hosted notebooks, etc)",
"Workstation για βαθιά μάθηση" = "A deep learning workstation (NVIDIA GTX, LambdaLabs, etc)",
"Λάπτοπ" = "A laptop",
"Επιτραπέζιο υπολογιστή" = "A personal computer / desktop",
"Κανένα" = "None",
"Άλλο" = "Other"
)
kaggle_2021$Q13 <- kaggle_2021$Q13 |>
fct_recode(
"2-5" = "2-5 times",
"6-25" = "6-25 times",
"> 25" = "More than 25 times",
"0" = "Never",
"1" = "Once"
)
kaggle_2021$Q21 <- kaggle_2021$Q21 |>
fct_recode(
"0-49" = "0-49 employees",
"> 10,000" = "10,000 or more employees",
"1000-9,999" = "1000-9,999 employees",
"250-999" = "250-999 employees",
"50-249" = "50-249 employees"
)
kaggle_2021_compare = kaggle_2021 %>%
mutate(Q3 = if_else(Q3 != "Ελλάδα", "Άλλο", Q3))
Προεπισκόπηση δεδομένων
Η κοινότητα του Kaggle
Ένα από τα πρώτα πράγματα που παρατήρησα όταν εγγράφηκα στην πλατφόρμα του Kaggle είναι το μεγάλο εύρος εθνικοτήτων που υπάρχει στη πλατφόρμα. Αρκετοί άνθρωποι από διάφορες χώρες, όλοι συγκεντρωμένοι σε μία ιστοσελίδα επειδή μοιράζονται το ίδιο πάθος για τον προγραμματισμό, την ανάλυση δεδομένων και την επιστήμη δεδομένων. Κάτι σαν το Facebook αλλά για τη Στατιστική :) Για να αναδείξω αυτό το στοιχείο της κοινότητας θα χρησιμοποιήσω έναν διαδραστικό πίνακα μέσω του πακέτου reactable
για να διαπιστώσουμε τις εθνικότητες που εκπροσωπούνται περισσότερο. Από τον παρακάτω πίνακα ξεχωρίζουμε ότι οι χρήστες από την Ινδία αποτελούν τη μεγαλύτερη κοινότητα με το ένα τέταρτο των χρηστών, ακολουθούμενη από τους χρήστες από τις ΗΠΑ. Οι Έλληνες χρήστες της πλατφόρμας είναι αρκετά λίγοι και τουλάχιστον στην έρευνα συμμετείχαν σε ποσοστό 0.39% του συνόλου των χρηστών που έλαβαν μέρος.
Θα πρέπει να σημειώσουμε ότι τα δεδομένα και συνεπώς και τα αποτελέσματα προέρχονται αποκλειστικά από την έρευνα που έχει διεξάγει η πλατφορμα του Kaggle. Δεν είναι μία συνολική εικόνα της κοινότητας της επιστήμης δεδομένων. Επίσης, θα πρέπει να σημειωθεί ότι η έρευνα είναι προαιρετική επομένως μελετάμε τα χαρακτηριστικά αυτών που επιθυμούσαν να συμμετέχουν στην έρευνα.
Κώδικας
a = kaggle_2021 %>%
group_by(Q3) %>%
summarise(n = n()) %>%
mutate(pct = round(n/nrow(kaggle_2021) * 100, digits = 2)) %>%
arrange(desc(pct)) %>%
reactable(.,
defaultPageSize = 6,
theme = espn(),
columns = list(
Q3 = colDef(name = "Χώρα"),
n = colDef(name = "Αριθμός χρηστών",
defaultSortOrder = "desc"),
pct = colDef(name = "Ποσοστό (%)")),
defaultColDef = colDef(
cell = data_bars(data = .,
text_position = "outside-base",
fill_opacity = 0.5, round_edges = T
)
)
)
a
Συμμετοχή γυναικών στον κλάδο
Γενικότερα, παρατηρείται διαχρονικά σε παγκόσμιο επίπεδο μία υποεκπροσώπηση των γυναικών στην αγορά εργασίας. Σύμφωνα με την (2023) μόλις 5 στις 10 γυναίκες απασχολούνται, σε αντίθεση με τους άνδρες όπου η αντίστοιχη αναλογία προσεγγίζει τους 7 στους 10. Εδώ όμως θέλουμε να μελετήσουμε συγκεκριμένα για το πεδίο της επιστήμης δεδομένων. Τελικά, στον κλάδο μας ακολουθείται το ίδιο μοτίβο της μη συμπερίληψης; Η απάντηση είναι ΝΑΙ, αλλά με ισχυρές διαφοροποιήσεις ανά χώρα.
::: {.cell title=’ Εξαγωγή δεδομένων - Συμμετοχή γυναικών στην έρευνα ανά χώρα’}
Κώδικας
data = kaggle_2021 %>%
group_by(Q3, Q3_iso2c) %>%
summarise(n = n(),
Women = sum(factor(Q2) == "Γυναίκα"),
pct_women = Women/n *100) %>%
mutate(iso2c = tolower(Q3_iso2c))
data_decreasing = data %>% dplyr::arrange(-pct_women)
# Add emoji flags
data_decreasing <- data_decreasing %>%
mutate(flag = map_chr(iso2c, ~ {
chars <- utf8ToInt(toupper(.x))
paste0(
intToUtf8(127397 + chars[1]),
intToUtf8(127397 + chars[2])
)
}))
:::
Κώδικας
highchart() %>%
hc_chart(type = "bar", inverted = TRUE) %>%
hc_title(text = "<b>Συμμετοχή γυναικών στη κοινότητα της επιστήμης δεδομένων</b>") %>%
hc_subtitle(text = glue("Σύμφωνα με τη πρόσφατη έρευνα του Kaggle, οι γυναίκες υποεκπροσωπούνται στην κοινότητα της επιστήμης των δεδομένων. Η χώρα με την ισχυρότερη (αναλογικά) συμμετοχή είναι η Τυνησία και αυτή με τη χαμηλότερη το Περού. Τέλος, η <b>Ελλάδα</b> έχει μία σχετικά απογοητευτική απόδοση στον συγκεκριμένο δείκτη καταλαμβάνοντας τη 40η θέση με ποσοστό 15.7%, και με δεδομένο ότι ο μέσος όρος συμμετοχής είναι στο {round(mean(data$pct_women),digits = 2)} %") ) %>%
hc_caption(text="Δεδομένα: Έρευνα χρηστών του Kaggle 2021 | <b>stesiam</b>, 2023") %>% hc_xAxis(categories = data_decreasing$Q3, title = list(text = NULL)) %>%
hc_yAxis(title = list(text = "Ποσοστό (%)")) %>%
hc_legend(enabled = FALSE) %>%
hc_colorAxis(
minColor = "#f2e5f7", # light lavender
maxColor = "#4a0072", # deep purple
stops = list(
list(0.0, "#f2e5f7"), # very light lavender
list(0.5, "#9c4dcc"), # medium purple
list(1.0, "#4a0072") # dark royal purple
)
) %>%
hc_add_series(
name = "Women %",
data = map(seq_len(nrow(data_decreasing)), function(i) {
list(
y = data_decreasing$pct_women[i],
Women = data_decreasing$Women[i],
n = data_decreasing$n[i],
country = data_decreasing$Q3[i],
flag = data_decreasing$flag[i]
)
})
) %>%
hc_tooltip(
useHTML = TRUE,
formatter = JS("
function() {
var point = this.point;
return '<span style=\"font-size:22px\">' + point.flag + '</span> ' +
'<b>' + point.country + '</b><br>' +
'Ποσοστό: ' + Highcharts.numberFormat(this.y, 2) + '%<br>' +
'Απόλυτος αριθμός: ' + point.Women + ' / ' + point.n;
}
")
) %>%
hc_plotOptions(
series = list(
borderWidth = 0,
pointPadding = 0.1,
groupPadding = 0.04,
animation = list(duration = 800)
)
)
Αυτή η μεγάλη ανισότητα στην συμμετοχή των γυναικών εκτός από στενάχωρη, είναι αρκετά προβληματική. Ευτυχώς, διάφορες κοινότητες έχουν αναγνωρίσει το πρόβλημα και έχουν δημιουργηθεί ομάδες που ενδυναμώνουν τη συμμετοχή των γυναικών στον κλάδο μας. Η πιο γνωστή σε εμένα ομάδα, όντας R χρήστης, είναι η κοινότητα R-ladies όπου υπάρχουν παραρτήματα αυτών των ομάδων σε διάφορες χώρες. Διοργανώνουν αρκετά συχνά πολλά σεμινάρια από τα οποία μπορείτε να τα βρείτε στο Youtube. Τέλος, από περιέργεια έψαξα και όντως υπάρχει αντίστοιχη ομάδα και για τη Python, η PyLadies.
Η ομάδα R-ladies είναι ένας οργανισμός που αποτελείται από άτομα που τους αρέσει η γλώσσα προγραμματισμού R και θέλουν να προωθήσουν την υποεκπροσώπηση μειονοτήτων, όχι απλώς των (σις) γυναικών, αλλά και των μειονοτικών φύλων. Αυτή τη στιγμή κοινότητες R ladies υπάρχουν σε 65 χώρες, και συνολικά 225 παραρτήματα. Υπάρχουν παραρτήματα που είναι ιδιαίτερα ενεργά και έχουν ανεξάρτητα κανάλια στο Youtube ή σελίδες στο διαδίκτυο. Στην Ελλάδα μπόρεσα να βρω πληροφορίες για δύο κοινότητες μία στην Αθήνα και μία στη Θεσσαλονίκη.
Ηλικιακή Κατανομή
Η κοινότητα των Ελλήνων χρηστών αποτελείται από μεγαλύτερης ηλικίας άτομα σε σχέση με την υπόλοιπη κοινότητα. Η πολυπληθέστερη ηλικιακή ομάδα στην Ελλάδα είναι οι 25-29 ετών, ενώ υπάρχει ένα σημαντικό ποσοστό 40άρηδων. Από την άλλη μεριά ο πληθυσμός των υπολοίπων χρηστών είναι αρκετά νεανικός, με τη συντριπτική πλειοψηφία των χρηστών να συγκεντρώνεται στις μικρότερες ηλικιακές ομάδες. Αθροίζοντας το συγκεκριμένο ποσοστό, οι τρεις αυτές ομάδες προσεγγίζουν το 60% των συνολικών χρηστών, αντί του 42% για την Ελληνική κοινότητα. Με μία πιο προσεκτική ματιά στο διάγραμμα μπορούμε να δούμε ότι η μεγαλύτερη διαφορά είναι. Αυτά τα ευρήματα ίσως είναι ένα στοιχείο ότι η πλατφόρμα καα γενικότερα ο κλάδος της επιστήμης δεδομένων δεν έχει ωριμάσει στην Ελλάδα όσο στον υπόλοιπο κόσμο και για αυτό η χρήση της να περιορίζεται στην Ελλάδα σε άτομα μετά τα 25 έτη, άτομα που πιθανότατα έχουν ήδη πτυχίο και έχουν ένα πανεπιστημιακό υπόβαθρο και κάποιου είδους εργασιακή εμπειρία (40+). Για αυτό θα ελέγξουμε και σχετικές μεταβλητές σε λίγο να δούμε αν αυτή η αρχική εξήγηση - εντύπωση θα επιβεβαιωθεί.
Κώδικας
data1 = kaggle_2021_compare %>%
select(Q3, Q1) %>%
group_by(Q3,Q1) %>%
summarise(n = n()) %>%
group_by(Q3) %>%
mutate(total = sum(n),
pct = round(n/total *100, digits = 1)) %>%
select(Q3, Q1, pct)
highchart() |>
hc_chart(type = "areaspline") |>
hc_title(text = "Ηλικιακή κατανομή χρηστών ανά χώρα προέλευσης (🇬🇷 / 🌍)",
style = list(fontSize = "20px", fontWeight = "bold")) |>
hc_subtitle(text = "Το ένα τέταρτο των Ελλήνων χρηστών ανήκουν στη ηλικιακή ομάδα των 25-29 ετών...",
style = list(fontSize = "14px", color = "#555")) |>
hc_xAxis(categories = unique(data1$Q1)) |>
hc_yAxis(title = list(text = "Κατανομή (%)"),
gridLineColor = "#e6e6e6") |>
hc_tooltip(shared = TRUE, valueSuffix = " %") |>
hc_plotOptions(areaspline = list(fillOpacity = 0.4, marker = list(enabled = FALSE))) |>
hc_legend(layout = "horizontal", align = "center", verticalAlign = "top",
floating = FALSE, borderWidth = 0) |>
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_add_series(name = "Ελλάδα", data = data1 %>% dplyr::filter(Q3 =="Ελλάδα") %>% pull(pct)) |>
hc_add_series(name = "Υπόλοιπος Κόσμος", data = data1 %>% dplyr::filter(Q3 =="Άλλο") %>% pull(pct))
Τέλος, δεν θα ήθελα να κλείσω την ενότητα δίχως να έχω και ένα συμπέρασμα για την αγαπημένη μου γλώσσα προγραμματισμού. Συγκρίνοντας τις δύο πιο διαδεδομένες γλώσσες προγραμματισμού ως προς την χρήση τους ανά ηλικιακή ομάδα παρατηρώ ότι και στις δύο γλώσσες οι μικρές ηλικίες, κάτω των 29 ετών αποτελούν τη πλειοψηφία των χρηστών τους. Αυτό είναι λογικό αν αναλογιστούμε ότι ο προγραμματισμός και η ανάλυση δεδομένων είναι κλάδοι με ιδιαίτερα υψηλή ζήτηση και επαγγελαμτική αποκατάσταση και οι γλώσσες προγραμματισμού αποτελούν προαπαιτούμενο σε σχέση με κάποια χρόνια πριν. Επίσης, παρατηρούμε ότι η Python έχει μεγαλύτερη συγκέντρωση χρηστών στις ηλικίες μέχρι 29 ετών, ενώ η R έχει αρκετά σημαντική παρουσία χρηστών μεγαλύτερων ηλικιών. Αυτό ήταν αναμενόμενο καθώς η R είχε από πάντα σκοπό και χαρακτηριζόταν ως μία γλώσσα για στατιστική ανάλυση, οπότε είναι αναμενόμενο να έχει περισσότερους υφιστάμενους - μεγαλύτερης ηλικίας χρήστες στο τομέα της επιστήμης δεδομένων, σε σχέση με τη Python. Μάλιστα η Python εδραιώθηκε στο τομέα της επιστήμης δεδομένων με την δημιουργία βιβλιοθηκών που υποστήριζαν την εισαγωγή δεδομένων (pandas, 2008), την οπτικοποίησή τους (matplotlib, 2003), την ανάλυσή τους (statsmodels, 2009) και τέλος την κατασκευή στατιστικών - προβλεπτικών μοντέλων μηχανικής μάθησης (scikit-learn, 2007).
Κώδικας
dt = kaggle_2021_compare %>%
select(Q8, Q1) %>%
group_by(Q8, Q1) %>%
summarise(n = n(), .groups = "drop") %>%
dplyr::filter(Q8 %in% c("R", "Python")) %>%
group_by(Q8) %>%
mutate(pct = round( 100* (n / sum(n)), digits = 2 )) %>%
ungroup(Q8)
highchart() |>
hc_chart(type = "areaspline") |>
hc_title(text = "Ηλικιακή κατανομή χρηστών ανά γλώσσα προγραμματισμού",
style = list(fontSize = "20px", fontWeight = "bold")) |>
hc_subtitle(text = "Το ένα τέταρτο των Ελλήνων χρηστών ανήκουν στη ηλικιακή ομάδα των 25-29 ετών...",
style = list(fontSize = "14px", color = "#555")) |>
hc_xAxis(categories = unique(data1$Q1)) |>
hc_yAxis(title = list(text = "Κατανομή (%)"),
gridLineColor = "#e6e6e6") |>
hc_tooltip(shared = TRUE, valueSuffix = " %") |>
hc_plotOptions(areaspline = list(fillOpacity = 0.4, marker = list(enabled = FALSE))) |>
hc_legend(layout = "horizontal", align = "center", verticalAlign = "top",
floating = FALSE, borderWidth = 0) |>
hc_colors(c("#1f78b4", "#ff7f0e")) |>
hc_add_series(name = "R", data = dt %>% dplyr::filter(Q8 =="R") %>% pull(pct)) |>
hc_add_series(name = "Python", data = dt %>% dplyr::filter(Q8 =="Python") %>% pull(pct))
Εκπαιδευτικό Υπόβαθρο
Ένα άλλο στοιχείο που αξίζει διερεύνησης είναι το υψηλότερο επίπεδο εκπαίδευσης που έχουν οι Έλληνες χρήστες έναντι των υπολοίπων χρηστών της πλατφόρμας. Προηγουμένως, παρατηρήσαμε μία κατανομή ηλικιών στην οποία δηλωνόταν ότι η συμμετοχή των μεγαλύτερων ηλικιών είναι μεγαλύτερη από την αντίστοιχη των άλλων χρηστών. Η υποψία μου είναι ότι έχοντας χρήστες τόσο μεγάλης ηλικίας πιθανότατα να υποδηλώνει μία κοινότητα αρκετά εξειδικευμένη. Αυτή η εντύπωση φαίνεται να επιβεβαιώνεται, μιας και οι κάτοχοι μεταπτυχιακού ή διδακτορικού τίτλου είναι σαφώς περισσότεροι αναλογικά. Περίπου το 78% των Ελλήνων χρηστών έχει τίτλο μεταπτυχιακού ή ανώτερο τίτλο ενώ ο ανάλογος δείκτης για την υπόλοιπη ομάδα χρηστών είναι 50%.
Κώδικας
data3 = kaggle_2021_compare %>%
select(Q3, Q4) %>%
group_by(Q3, Q4) %>%
summarise(n = n()) %>%
group_by(Q3) %>%
mutate(pct = round(n/sum(n)*100, digits = 1)) %>%
ungroup()
d = data3 %>% dplyr::filter(Q4 %in% c("Προπτυχιακό", "Μεταπτυχιακό", "Διδακτορικό"))
highchart() %>%
hc_chart(type = "bar") %>%
hc_title(text = "Εκπαιδευτικό υπόβαθρο χρηστών (🇬🇷 / 🌍)") %>%
hc_subtitle(text="Οι Έλληνες χρήστες έχουν υψηλότερους τίτλους σπουδών με 77% να έχει μεταπτυχιακό ή διδακτορικό δίπλωμα. Το αντίστοιχο ποσοστό στις υπόλοιπες χώρες είναι 50%.") %>%
hc_caption(text="Σημείωση: Τα ποσοστά αναφέρονται σε επίπεδο χώρας. <br> stesiam, 2023") %>%
hc_xAxis(categories = d$Q4,
title = list(text = NULL)) %>%
hc_yAxis(min = 0,
title = list(text = "Ποσοστό (%) ερωτηθέντων ανά χώρα", align = "high"),
labels = list(overflow = "justify")) %>%
hc_tooltip(valueSuffix = " %") %>%
hc_plotOptions(bar = list(dataLabels = list(enabled = TRUE))) %>%
hc_series(
list(name = "Ελλάδα", data = d %>% dplyr::filter(Q3 =="Ελλάδα") %>% pull(pct)),
list(name = "Υπόλοιπος Κόσμος", data = d %>% dplyr::filter(Q3 =="Άλλο") %>% pull(pct))
) %>%
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_legend(
align = "center",
verticalAlign = "top",
layout = "horizontal"
)
Κώδικας
data3 = kaggle_2021_compare %>%
select(Q8, Q4) %>%
group_by(Q8, Q4) %>%
summarise(n = n()) %>%
group_by(Q8) %>%
mutate(pct = round(n/sum(n)*100, digits = 1)) %>%
ungroup()
d = data3 %>% dplyr::filter(Q4 %in% c("Προπτυχιακό", "Μεταπτυχιακό", "Διδακτορικό"))
highchart() %>%
hc_chart(type = "bar") %>%
hc_title(text = "Εκπαιδευτικό υπόβαθρο χρηστών (🇬🇷 / 🌍)") %>%
hc_subtitle(text="Οι Έλληνες χρήστες έχουν υψηλότερους τίτλους σπουδών με 77% να έχει μεταπτυχιακό ή διδακτορικό δίπλωμα. Το αντίστοιχο ποσοστό στις υπόλοιπες χώρες είναι 50%.") %>%
hc_caption(text="Σημείωση: Τα ποσοστά αναφέρονται σε επίπεδο χώρας. <br> stesiam, 2023") %>%
hc_xAxis(categories = d$Q4,
title = list(text = NULL)) %>%
hc_yAxis(min = 0,
title = list(text = "Ποσοστό (%) ερωτηθέντων ανά χώρα", align = "high"),
labels = list(overflow = "justify")) %>%
hc_tooltip(valueSuffix = " %") %>%
hc_plotOptions(bar = list(dataLabels = list(enabled = TRUE))) %>%
hc_series(
list(name = "R", data = d %>% dplyr::filter(Q8 =="R") %>% pull(pct)),
list(name = "Python", data = d %>% dplyr::filter(Q8 =="Python") %>% pull(pct))
) %>%
hc_colors(c("#1f78b4", "#ff7f0e")) |>
hc_legend(
align = "center",
verticalAlign = "top",
layout = "horizontal"
)
Εργασία
Μέχρι στιγμής ξέρω ότι η μικρή κοινότητα των Ελλήνων επιστημόνων δεδομένων κατά κατανομή από άτομα μεγαλύτερης ηλικίας και υψηλότερης εξειδίκευσης - πανεπιστημιακών τίτλων. Αυτό όμως μεταφράζεται σε χρόνια επαγγελματικής εμπειρίας στο πεδίο; Οργανώνοντας τις κατηγορίες ανάλογα με τα χρόνια εξασκήσης επαγγέλματος:
- Καμία (0 έτη)
- Λιγότερο από ένα έτος
- Από ένα μέχρι τρία έτη (1-3)
- Από τρία μέχρι πέντε έτη (3-5)
- ΑπΌ 5 μέχρι δέκα έτη (5-10)
- Από 10 μέχρι είκοσι έτη (10-20)
- Πάνω από 20 έτη (>20)
Ένα ενδιαφέρον στοιχείο του διαγράμματος είναι ότι οι χρήστες με εργασιακή εμπειρία μέχρι 1 έτος αντιπροσωπεύουν το 1/5 για τους Έλληνες χρήστες και το 1/4 για τους χρήστες της πλατφόρμας. Αυτό δηλώνει ένα πεδίο που έχει σημαντική ζήτηση όπου υπάρχει που σημαντικό μέρος των ομάδων αυτών έχουν πιθανότατα έχουν πρόσφατα εισέλθει στη αγορά εργασίας και συγκεκριμένα στο πεδίο της ανάλυσης δεδομένων. Επιπλέον, επιβεβαιώνεται ότι οι Έλληνες χρήστες αναλογικά έχουν περισσότερη εργασιακή εμπειρία σε σύγκριση με τους υπόλοιπους χρήστες της πλατφόρμας γεγονός που οφείλεται στην ηλικιακή δομή και το επίπεδο σπουδών των συμμετεχόντων.
Κώδικας
kaggle_2021_compare$Q6 <- kaggle_2021_compare$Q6 |>
fct_relevel(
"0", "< 1", "1-3", "3-5", "5-10", "10-20", "20+"
)
data = kaggle_2021_compare %>%
group_by(Q3) %>%
count(Q6) |>
mutate(sum = sum(n),
pct = round((n / sum) * 100, digits = 1)) %>%
select(Q3, Q6, pct) %>%
pivot_wider(names_from = "Q3", values_from = "pct") %>%
ungroup()
Κώδικας
highchart() |>
hc_chart(type = "areaspline") |>
hc_title(text = "Χρόνια προϋπηρεσίας ανά χώρα προέλευσης (🇬🇷 / 🌍)") |>
hc_subtitle(text = "Το ένα τέταρτο των Ελλήνων χρηστών ανήκουν στη ηλικιακή ομάδα των 25-29 ετών. Γενικότερα τα άτομα κάτω των 29 ετών αποτελούν το 42% των Ελλήνων χρηστών και το 56% από άλλες χώρες.") |>
hc_xAxis(categories = unique(data$Q6)) |>
hc_yAxis(title = list(text = "Κατανομή (%)")) |>
hc_tooltip(shared = TRUE, valueSuffix = " %") |>
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_plotOptions(
areaspline = list(
fillOpacity = 0.5 # match the Highcharts demo's fill
)
) |>
hc_legend(
layout = "horizontal",
verticalAlign = "top"
) |>
hc_add_series(
name = "Ελλάδα",
data = data$Ελλάδα
) |>
hc_add_series(
name = "Υπόλοιπος Κόσμος",
data = data$Άλλο
)
Παρά τη μεγάλη εμπειρία και τη σημαντικότερη εξειδίκευση που προκύπτει από τις ανώτερες σπουδές οι Έλληνες επιστήμονες δεδομένων εργάζονται σε σχετικά μικρές εταιρείες και οργανισμούς. Αυτό το στοιχείο είναι αρκετά σημαντικό, αν αναλογιστούμε ότι περίπου το 47% των ξένων δήλωσαν ότι εργάζονται σε επιχειρήσεις έως 250 υπαλλήλων και το αντίστοιχο ποσοστό για τους Έλληνες είναι 58%.
Κώδικας
kaggle_2021_compare$Q21 <- kaggle_2021_compare$Q21 |>
fct_relevel(
"0-49", "50-249", "250-999", "1000-9,999", "> 10,000"
)
data = kaggle_2021_compare %>%
drop_na(Q21) %>%
group_by(Q3) %>%
count(Q21) |>
mutate(sum = sum(n),
pct = round((n / sum) * 100, digits = 1)) %>%
select(Q3, Q21, pct) %>%
pivot_wider(names_from = "Q3", values_from = "pct") %>%
ungroup()
highchart() |>
hc_chart(type = "areaspline") |>
hc_title(text = "Μέγεθος επιχειρήσεων ανά χώρα προέλευσης (🇬🇷 / 🌍)") |>
hc_subtitle(text = "Αριθμός υπαλλήλων που απασχολεί η εταιρεία του ερωτώμενου") |>
hc_xAxis(categories = unique(data$Q21)) |>
hc_yAxis(title = list(text = "Κατανομή (%)")) |>
hc_tooltip(shared = TRUE, valueSuffix = " %") |>
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_plotOptions(
areaspline = list(
fillOpacity = 0.5 # match the Highcharts demo's fill
)
) |>
hc_legend(
layout = "horizontal",
verticalAlign = "top"
) |>
hc_add_series(
name = "Ελλάδα",
data = data$Ελλάδα
) |>
hc_add_series(
name = "Υπόλοιπος Κόσμος",
data = data$Άλλο
)
Κώδικας
kaggle_2021_compare$Q25ed <- kaggle_2021_compare$Q25 |>
fct_recode(
">200,000" = ">$1,000,000",
"0-9,999" = "$0-999",
">200,000" = "$500,000-999,999",
"0-9,999" = "1,000-1,999",
"10,000-19,999" = "10,000-14,999",
"100,000-200,000" = "100,000-124,999",
"100,000-200,000" = "125,000-149,999",
"10,000-19,999" = "15,000-19,999",
"100,000-200,000" = "150,000-199,999",
"0-9,999" = "2,000-2,999",
"20,000-29,999" = "20,000-24,999",
">200,000" = "200,000-249,999",
"20,000-29,999" = "25,000-29,999",
">200,000" = "250,000-299,999",
"0-9,999" = "3,000-3,999",
"30,000-49,999" = "30,000-39,999",
">200,000" = "300,000-499,999",
"0-9,999" = "4,000-4,999",
"30,000-49,999" = "40,000-49,999",
"0-9,999" = "5,000-7,499",
"50,000-69,999" = "50,000-59,999",
"50,000-69,999" = "60,000-69,999",
"0-9,999" = "7,500-9,999",
"70,000-99,000" = "70,000-79,999",
"70,000-99,000" = "80,000-89,999",
"70,000-99,000" = "90,000-99,999"
)
kaggle_2021_compare$Q25ed <- kaggle_2021_compare$Q25ed |>
fct_relevel(
"0-9,999", "10,000-19,999", "20,000-29,999", "30,000-49,999",
"50,000-69,999", "70,000-99,000", "100,000-200,000", ">200,000"
)
data = kaggle_2021_compare %>%
drop_na(Q25ed) %>%
group_by(Q3) %>%
count(Q25ed) |>
mutate(sum = sum(n),
pct = round((n / sum) * 100, digits = 1)) %>%
select(Q3, Q25ed, pct) %>%
pivot_wider(names_from = "Q3", values_from = "pct") %>%
ungroup()
highchart() |>
hc_chart(type = "areaspline") |>
hc_title(text = "Αμοιβή ανά χώρα (🇬🇷 / 🌍)") |>
hc_subtitle(text = "Ποσοστό ερωτώμενων ανά κατηγορία αμοιβής") |>
hc_xAxis(categories = data$Q25ed) |>
hc_yAxis(title = list(text = "Κατανομή (%)")) |>
hc_tooltip(shared = TRUE, valueSuffix = " %") |>
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_plotOptions(
areaspline = list(
fillOpacity = 0.5 # match the Highcharts demo's fill
)
) |>
hc_legend(
layout = "horizontal",
verticalAlign = "top"
) |>
hc_add_series(
name = "Ελλάδα",
data = data$Ελλάδα
) |>
hc_add_series(
name = "Υπόλοιπος Κόσμος",
data = data$Άλλο
)
Οκ, περισσότερη εμπειρία. Όμως με τι ασχολούνται; Υπάρχουν διάφορες εργασίες που εσωκλείει ο όρος Επιστήμη Δεδομένων. Ο αναλυτής δεδομένων, ο επιστήμονας δεδομένων, ο μηχανικός δεδομένων είναι μερικές από
Κώδικας
r = arrange(da, -`Ελλάδα`)
r = head(r)
highchart() %>%
hc_chart(type = "bar") %>%
hc_title(text = "Εργασίες με μεγαλύτερη συχνότητα στην Ελλάδα") %>%
hc_xAxis(categories = r$Q5, title = NULL) %>%
hc_yAxis(title = list(text = "Ποσοστό (%) χρηστών")) %>%
hc_series(list(
name = "Fruits",
data = r$Ελλάδα
)) %>%
hc_legend(enabled = FALSE)
Κώδικας
r = arrange(da, -`Άλλο`)
r = head(r)
highchart() %>%
hc_chart(type = "bar") %>%
hc_title(text = "Εργασίες με μεγαλύτερη συχνότητα ξένων χρηστών") %>%
hc_xAxis(categories = r$Q5, title = list(text = NULL)) %>%
hc_yAxis(title = list(text = "Ποσοστό (%) χρηστών")) %>%
hc_series(list(
name = "Ποσοστό:",
data = r$Άλλο
)) %>%
hc_legend(enabled = FALSE)
Η εργαλειοθήκη μας
Η γλώσσα που κυριαρχεί στην Επιστήμη Δεδομένων και στις δύο ομάδες είναι η Python. Η μόνη διαφοροποίηση είναι μεταξύ Ελλήνων και ξένων χρηστών είναι ίσως η αναλογικότερη σημαντικότερη βάση χρηστών της R. Σε κάθε περίπτωση περίπου οκτώ στους δέκα έχουν επιλέξει ως κύρια γλώσσα την Python, ακολουθούμενη από την R και τέλος την SQL.
Κώδικας
y = kaggle_2021_compare |>
group_by(Q3, Q8) |>
count() |>
ungroup(Q8) |>
top_n(n = 3, wt = n) |>
mutate(sum = sum(n),
pct = round((n/sum)*100, digits = 1)) %>%
ungroup(Q3) |>
select(Q3, Q8, pct) |>
pivot_wider(names_from = "Q3", values_from = "pct")
y$img = c(
'<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/150px-Python-logo-notext.svg.png" height="40">',
'<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/R_logo.svg/250px-R_logo.svg.png" height="40">',
'<img src="" height="2px">'
)
Κώδικας
highchart() %>%
hc_chart(type = "bar", marginLeft = 100, spacingLeft = 5, spacingRight = 5) %>%
hc_colors(c("#1f78b4", "#a6a6a6")) %>%
hc_title(text = "Γλώσσες προγραμματισμού (🇬🇷 / 🌍)",
style = list(fontSize = "20px", fontWeight = "bold")) %>%
hc_subtitle(text="Η Python κυριαρχεί στον κόσμο της επιστήμης δεδομένων. Ένα ενδιαφέρον στοιχείο είναι η αναλογικά ισχυρότερη συμμετοχή - επιλογή της R στην Ελληνική κοινότητα.",
style = list(fontSize = "14px", color = "#555")) %>%
hc_caption(text="Σημείωση: Τα ποσοστά αναφέρονται σε επίπεδο χώρας.<br>stesiam, 2023",
style = list(fontSize = "11px", color = "#777")) %>%
hc_xAxis(categories = y$Q8,
labels = list(useHTML = TRUE, style = list(fontSize = "12px", whiteSpace = "normal"))) %>%
hc_yAxis(min = 0,
title = list(text = NULL),
labels = list(format = "{value}%")) %>%
hc_tooltip(valueSuffix = " %") %>%
hc_plotOptions(
bar = list(
borderRadius = 5,
dataLabels = list(enabled = TRUE, format = "{point.y:.0f}%")
)
) %>%
hc_series(
list(name = "Ελλάδα", data = y$Ελλάδα),
list(name = "Υπόλοιπος Κόσμος", data = y$Άλλο)
) %>%
hc_legend(
align = "center",
verticalAlign = "top",
layout = "horizontal",
itemStyle = list(fontSize = "12px")
) %>%
hc_colors(c("#1f78b4", "#33a02c")) |>
hc_responsive(
rules = list(
list(
condition = list(maxWidth = 500),
chartOptions = list(
title = list(style = list(fontSize = "16px")),
subtitle = list(style = list(fontSize = "12px")),
xAxis = list(labels = list(style = list(fontSize = "10px", categories = y$Q8))),
yAxis = list(labels = list(style = list(fontSize = "10px"))),
legend = list(
layout = "vertical",
align = "center",
verticalAlign = "bottom",
itemStyle = list(fontSize = "10px")
)
)
)
)
)
Κώδικας
custom_df =
tibble(
t = kaggle_2021_compare$Q3,
l = kaggle_2021_compare$Q11
) |>
dplyr::filter(t %in% c("Άλλο"))
df_sankey = custom_df %>%
group_by(t , l) %>%
summarise(weight = n(), .groups = "drop")
# links2 = df_sankey %>%
# group_by(r, t) %>%
# summarise(weight = sum(weight), .groups = "drop") %>%
# rename(from = r, to = t)
links3 = df_sankey %>%
group_by(t, l) %>%
summarise(weight = sum(weight), .groups = "drop") %>%
rename(from = t, to = l)
links_all <- bind_rows(links3)
highchart() %>%
hc_chart(type = "sankey") %>%
hc_title(text = "Διάγραμμα αλληλουχιών: Σύγκριση παλιών και νέας καμπάνιας") %>%
hc_subtitle(text = "Στο διάγραμμα τονίζεται τα καλύτερα αποτελέσματα της τωρινής καμπάνιας (δεύτερη στήλη)") %>%
hc_add_series(
keys = c("from", "to", "weight"),
data = list_parse(links_all),
name = "Flow"
) %>%
hc_tooltip(pointFormat = "{point.from} → {point.to}: <b>{point.weight}</b>")
Επίλογος - Συμπεράσματα
Τα αποτελέσματα είναι μάλλον. Η Ελλάδα δεν στερείται ανθρώπινου κεφαλαίου και ανθρώπων που είναι γνώστες του πεδίου της Επιστήμης Δεδομένων. Αποτελείται από άτομα με μεγάλυ εξειδίκευση και αρκετά μεγάλη εργασιακή εμπειρία. Βέβαια, υπάρχει ένα μοτίβο που είναι αρκετά ανησυχητικό και αυτό είναι η κατανομή στις ηλικίες. Αυτό μπορεί να σημαίνει την αρκετά μικρή διείσδυση με ενδιαφέρον για το κλάδο από μικρές ηλικίες και αυτό μπορεί να είναι προβληματικό
Τέλος, θα ήθελα να διευκρινίσω τι εννοεί το άρθρο για να αποφευχθούν οι λάθος αναγνώσεις. Σε αρκετές κατανομές δηλώνονται στοιχεία τα οποία είναι ευνοϊκά υπέρ της Ελλάδας. Σε καμία περίπτωση αυτό δεν σημαίνει ότι οι Έλληνες είναι καλύτεροι στην Επιστήμη Δεδομένων και έναν τέτοιο συμπέρασμα θα ήταν λανθασμένο. Συγκρίνουμε δημογραφικά στοιχεία χρηστών από μία έρευνα μιας πλατφόρμας. Έτσι λοιπόν η κατανομή πιθανότατα κρύβει τη χαμηλή συμμετοχή και διείσδυση της επιστήμης δεδομένων στη χώρα μας που δηλώνεται τόσο από τον χαμηλό αριθμό χρηστών, όσο και από τη δομή αυτών. Στη πραγματικότητα η τάση είναι ανησυχητική μιας και οι κατανομές μας δεν συνοδεύονται από ένα ανάλογο ποσοστό μικρών ηλικιών με ενδιαφέρον στο πεδίο.
Αναφορές
Αναφορά
@online{2023,
author = {, stesiam},
title = {Ελληνική κοινότητα επιστήμης δεδομένων},
date = {2023-05-06},
url = {https://stesiam.com/el/posts/kaggle-greek-community/},
langid = {el}
}