Εισαγωγή
To Kaggle είναι από τις πιο γνωστές πλατφόρμες αναλυτών και επιστημόνων δεδομένων με πάνω από 10 εκατομμύρια εγγεγραμμένους χρήστες (Heads or Tails, 2020). Πέρα από αυτό, το Kaggle προσφέρει ένα ευρύ φάσμα λειτουργιών, όπως: - Δημιουργία άρθρων που περιέχουν εκτελέσιμο κώδικα καθώς και τα αποτελέσματα αυτού (γραφήματα, στατιστικά αποτελέσματα κτλ.) - Επικοινωνία μεταξύ χρηστών μέσω φόρουμ συζήτησης και επίλυσης αποριών - Παροχή πλούσιου εκπαιδευτικού υλικού και μαθημάτων, τα περισσότερα εκ των οποίων βασίζονται στη Python και σε βιβλιοθήκες της, καλύπτοντας θέματα οπτικοποίησης, ανάλυσης δεδομένων, μηχανικής και βαθιάς μάθησης - Πολυάριθμους διαγωνισμούς μηχανικής και βαθιάς μάθησης στους οποίους μπορεί να συμμετέχει ο κάθε χρήστης
Αξίζει να σημειωθεί ότι υπάρχουν και άλλες παρόμοιες πλατφόρμες, ωστόσο καμία τους δεν διαθέτει αντίστοιχη βάση χρηστών, ούτε προσφέρει ανάλογο εύρος λειτουργιών. Μία εναλλακτική του Kaggle μπορεί να θεωρηθεί το DrivenData, κυρίως όσον αφορά το κομμάτι των διαγωνισμών. Ωστόσο, στο 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))Προεπισκόπηση δεδομένων
|
Ηλικία Q1 |
Φύλο Q2 |
Εθνικότητα Q3 |
Εκπαίδευση Q4 |
Επάγγελμα Q5 |
Έτη εμπειρίας Q6 |
Γλώσσα προγραμματισμού Q8 |
Εξοπλισμός Q11 |
NA Q13 |
Αμοιβή Q21 |
|---|---|---|---|---|---|---|---|---|---|
| 50-54 | Άνδρας | Άλλο | Προπτυχιακό | Άλλο | 5-10 | Python | Λάπτοπ | 2-5 | 50-249 |
| 50-54 | Άνδρας | Άλλο | Μεταπτυχιακό | Project Manager | 20+ | Python | Πλατφόρμα Cloud | 0 | 1000-9,999 |
| 22-24 | Άνδρας | Άλλο | Μεταπτυχιακό | Μηχανικός Λογισμικού | 1-3 | Python | Λάπτοπ | 0 | 1000-9,999 |
| 45-49 | Άνδρας | Άλλο | Διδακτορικό | Μηχανικός Έρευνας | 20+ | Python | Πλατφόρμα Cloud | > 25 | 1000-9,999 |
| 45-49 | Άνδρας | Άλλο | Διδακτορικό | Άλλο | < 1 | Python | Πλατφόρμα Cloud | 0 | 50-249 |
Η κοινότητα του Kaggle
Ένα από τα πρώτα πράγματα που παρατήρησα όταν εγγράφηκα στο Kaggle ήταν η εξαιρετική γεωγραφική ποικιλομορφία της κοινότητάς του. Άνθρωποι από δεκάδες χώρες, συγκεντρωμένοι σε μία ιστοσελίδα, μοιράζονται το ίδιο πάθος για τον προγραμματισμό, την ανάλυση και την επιστήμη δεδομένων. Κάτι σαν το Facebook αλλά για τη Στατιστική :). Για να αναδείξω αυτό το στοιχείο της κοινότητας θα χρησιμοποιήσω έναν διαδραστικό πίνακα μέσω του πακέτου reactable ώστε να εντοπίσουμε τις εθνικότητες που εκπροσωπούνται περισσότερο. Από τον παρακάτω πίνακα ξεχωρίζουμε ότι οι χρήστες από την Ινδία αποτελούν τη μεγαλύτερη κοινότητα, αντιπροσωπεύπντας περίπου το ένα τέταρτο του συνόλου, ακολουθούμενη από τους χρήστες των ΗΠΑ. Οι Έλληνες χρήστες της πλατφόρμας είναι σχετικά λίγοι, με ποσοστό συμμετοχής 0.39% του συνόλου των χρηστών στην εν λόγω έρευνα.
Θα πρέπει να σημειώσουμε ότι τα δεδομένα και κατ’ επέκταση τα αποτελέσματα προέρχονται αποκλειστικά από την ετήσια έρευνα που έχει διεξάγει η πλατφόρμα του Kaggle. Δεν αντικατοπτρίζουν τη συνολική εικόνα της κοινότητας της επιστήμης δεδομένων σε παγκόσμιο επίπεδο. Επίσης, η συμμετοχή στην έρευνα είναι προαιρετική, επομένως μελετούμε τα χαρακτηριστικά μόνο όσων επέλεξαν να συμμετάσχουν. Αυτό ενδέχεται να εισάγει μεροληψία αυτοεπιλογής (self-selection bias), που σημαίνει ότι οι συμμετέχοντες μπορεί να διαφέρουν συστηματικά από εκείνους που δεν απάντησαν.
Κώδικας
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. Εδώ θέλουμε να μελετήσουμε συγκεκριμένα για το πεδίο της επιστήμης δεδομένων. Τελικά, στον κλάδο μας ακολουθείται το ίδιο μοτίβο της μη συμπερίληψης; Η απάντηση είναι ναι, αλλά με έντονες διαφοροποιήσεις ανά χώρα.
Κώδικας
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}
}