Ελληνική κοινότητα επιστήμης δεδομένων

Μία περιγραφική ανάλυση σχετικά με τους Έλληνες χρήστες του Kaggle, που αποτελεί τη πλατφόρμα με αναλυτές και επιστήμονες δεδομένων. Με βάση τα στοιχεία της έρευνας των χρηστών της πλατφόρμας του 2021, πώς συγκρίνονται οι Έλληνες χρήστες με τον υπόλοιπο κόσμο;

R
Περιγραφική Ανάλυση
Συγγραφέας

stesiam

Δημοσιευμένο

6 Μαΐου 2023

Εισαγωγή

To Kaggle είναι από τις πιο γνωστές πλατφόρμες αναλυτών / επιστημόνων δεδομένων μιας και έχει πάνω από 10 εκατομμύρια χρήστες (Heads or Tails, 2020). Εκτός από αυτό, το Kaggle προσφέρει πάρα πολλές λειτουργίες, όπως: - Δημιουργία άρθρων που περιέχουν εκτελέσιμο κώδικα καθώς και τα αποτελέσματα αυτού (γραφήματα, στατιστικά αποτελέσματα κτλ.) - Επικοινωνία χρηστών μέσω του φόρουμ συζήτησης και επίλυσης αποριών - Προσφορά αρκετού υλικού επιμόρφωσης των χρηστών και διάφορων μαθημάτων, όπου τα περισσότερα βασίζονται στη Python και σε βιβλιοθήκες της για οπτικοποίηση δεδομένων, θέματα ανάλυσης δεδομένων, μηχανικής και βαθιάς μάθησης - Πολλούς διαγωνισμούς μηχανικής / βαθιάς μάθησης στους οποίους μπορεί να συμμετέχει ο χρήστης

Αξίζει να σημειωθεί ότι υπάρχουν και άλλες παρόμοιες πλατφόρμες με το Kaggle, ωστόσο καμία τους δεν έχει ούτε τη αντίστοιχη βάση χρηστών, ούτε προσφέρει αντίστοιχες λειτουργίες. Μία εναλλακτική του Kaggle μπορεί να θεωρηθεί το DrivenData, όσον αφορά το κομμάτι των διαγωνισμών. Προφανώς, δεν μπορείς να δημοσιεύσεις δικό σου άρθρα και στη προαναφερόμενη πλατφόρμα συμμετέχουν αρκετά λιγότεροι χρήστες.

Λογότυπο της πλατφόρμας Kaggle

Η έρευνα μηχανικής μάθησης και επιστήμης δεδομένων (Kaggle Machine Learning & Data Science Survey) είναι μία έρευνα η οποία υλοποιείται σε ετήσια βάση από την ίδια τη πλατφόρμα. Οι χρήστες της απαντάνε σε διάφορα δημογραφικά στοιχεία και οι χρήστες αναλύουν τα δεδομένα σε μία μορφή διαγωνισμού. Σε αυτό το άρθρο θα κάνω μία ανάλυση για τα δεδομένα της έρευνας του 2021, συγκρίνοντας τα χαρακτηριστικά των Ελλήνων χρηστών της πλατφόρμας με αυτά των υπολοίπων.

Προετοιμασία

Εισαγωγή βιβλιοθηκών

Σε αυτό το άρθρο θα χρειαστώ να εισάγω και να τροποποιήσω τα δεδομένα μου, συνεπώς η σουίτα πακέτων του tidyverse κρίνεται απαραίτητη μιας και θα αξιοποιήσω λειτουργίες από πακέτα όπως το readr, το dplyr & το tidyr. Ο όγκος των δεδομένων είναι τεράστιος που μας δίνει αρκετές επιλογές ανάλυσης και μας δίνεται η ευκαιρία να οπτικοποιήσουμε αρκετά δεδομένα, μέσω του πακέτου highcharter. Τέλος, σε μεταβλητές οι οποίες έχουν αρκετές τιμές (π.χ. χώρες) ενδεχομένως να χρειαστεί να αναλύσω τα δεδομένα μου και σε πίνακες και για αυτό το λόγο ενδείκνυται η χρήση πινάκων μέσω των πακέτων reactable ή reactablefmtr.

Κώδικας
# Βιβλιοθήκες της R για γενική χρήση
library(readr)
library(dplyr)
library(tidyr)
library(purrr)
library(glue)
library(forcats)

# Δημιουργία πινάκων
library(kableExtra)
library(reactablefmtr)

# Δημιουργία διαγραμμάτων
library(highcharter)
library(showtext)
library(sysfonts)

Εισαγωγή δεδομένων

Το Kaggle μας προσφέρει το σύνολο των δεδομένων σε ένα αρχείο csv, συνεπώς θα χρειαστώ την εντολή read_csv από το πακέτο readr. Θα φορτώσω το αντίστοιχο σύνολο δεδομένων ονομάζοντάς το kaggle_2021. Σε αυτό το σύνολο περιλαμβάνεται στη πρώτη σειρά και η ερώτηση που έθεσε στους χρήστες η οποία καλό θα ήταν να μην τη συμπεριλάβω για να διευκολύνω την ανάλυσή μου.

Κώδικας
kaggle_2021 = read_csv("data/kaggle_survey_2021.csv")

# Delete second line
kaggle_2021 = kaggle_2021[-c(1),]

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))

Προεπισκόπηση δεδομένων

Κώδικας
reactable(head(kaggle_2021_compare))
Πίνακας 1: Προεπισκόπηση πρώτων 5 σειρών του συνόλου δεδομένων

Η κοινότητα του 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
Πίνακας 2: Απόλυτος αριθμός και ποσοστό χρηστών ανά χώρα προέλευσης

Συμμετοχή γυναικών στον κλάδο

Γενικότερα, παρατηρείται διαχρονικά σε παγκόσμιο επίπεδο μία υποεκπροσώπηση των γυναικών στην αγορά εργασίας. Σύμφωνα με την (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)
        )
    ) 
Σχήμα 1: Ραβδόγραμμα συμμετοχής γυναικών στην έρευνα του Kaggle

Αυτή η μεγάλη ανισότητα στην συμμετοχή των γυναικών εκτός από στενάχωρη, είναι αρκετά προβληματική. Ευτυχώς, διάφορες κοινότητες έχουν αναγνωρίσει το πρόβλημα και έχουν δημιουργηθεί ομάδες που ενδυναμώνουν τη συμμετοχή των γυναικών στον κλάδο μας. Η πιο γνωστή σε εμένα ομάδα, όντας R χρήστης, είναι η κοινότητα R-ladies όπου υπάρχουν παραρτήματα αυτών των ομάδων σε διάφορες χώρες. Διοργανώνουν αρκετά συχνά πολλά σεμινάρια από τα οποία μπορείτε να τα βρείτε στο Youtube. Τέλος, από περιέργεια έψαξα και όντως υπάρχει αντίστοιχη ομάδα και για τη Python, η PyLadies.

Η ομάδα R-ladies είναι ένας οργανισμός που αποτελείται από άτομα που τους αρέσει η γλώσσα προγραμματισμού R και θέλουν να προωθήσουν την υποεκπροσώπηση μειονοτήτων, όχι απλώς των (σις) γυναικών, αλλά και των μειονοτικών φύλων. Αυτή τη στιγμή κοινότητες R ladies υπάρχουν σε 65 χώρες, και συνολικά 225 παραρτήματα. Υπάρχουν παραρτήματα που είναι ιδιαίτερα ενεργά και έχουν ανεξάρτητα κανάλια στο Youtube ή σελίδες στο διαδίκτυο. Στην Ελλάδα μπόρεσα να βρω πληροφορίες για δύο κοινότητες μία στην Αθήνα και μία στη Θεσσαλονίκη. Λογότυπο της κοινότητας R-ladies, ένα γράμμα R με μωβ χρώμα, βασισμένο στο πρωτότυπο λογότυπο της γλώσσας προγραμματισμού.

Ηλικιακή Κατανομή

Η κοινότητα των Ελλήνων χρηστών αποτελείται από μεγαλύτερης ηλικίας άτομα σε σχέση με την υπόλοιπη κοινότητα. Η πολυπληθέστερη ηλικιακή ομάδα στην Ελλάδα είναι οι 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))
Σχήμα 2: Διάγραμμα περιοχής για τη μελέτη της κατανομής των ηλικιακών ομάδων μεταξύ των χρηστών από την Ελλάδα και των χρηστών άλλων χωρών.

Εκπαιδευτικό Υπόβαθρο

Κώδικας
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()
`summarise()` has grouped output by 'Q3'. You can override using the `.groups`
argument.
Κώδικας
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_legend(
    align = "center",
    verticalAlign = "top",
    layout = "horizontal"
  )

Εργασιακές συνθήκες

Ποια είναι η εργασιακή εμεπιρ

Κώδικας
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")
Κώδικας
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 = "vertical",
    align = "left",
    verticalAlign = "top"
    ) |>
  hc_add_series(
    name = "Ελλάδα",
    data = data$Ελλάδα
  ) |>
  hc_add_series(
    name = "Υπόλοιπος Κόσμος",
    data = data$Άλλο
  )
Κώδικας
da = kaggle_2021_compare |>
  group_by(Q3) |>
  count(Q5) |>
  arrange(-n) |>
  mutate(sum = sum(n),
         pct = round((n/sum)*100, digits = 2)) |>
  ungroup(Q3) |>
  select(Q3, Q5, pct) |>
  pivot_wider(names_from = Q3, values_from = pct)
Κώδικας
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)

Δημοφιλής γλώσσα προγραμματισμού

Κώδικας
y = kaggle_2021_compare |>
  group_by(Q3, Q8) |>
  count() |>
  ungroup(Q8) |>
  top_n(3) |>
  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")
Selecting by n
Κώδικας
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 = paste0(y$Q8, " ", y$img),
           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_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"))),
          yAxis = list(labels = list(style = list(fontSize = "10px"))),
          legend = list(
            layout = "vertical",
            align = "center",
            verticalAlign = "bottom",
            itemStyle = list(fontSize = "10px")
          )
        )
      )
    )
  )

Αναφορές

Cuilla, K. (2022). reactablefmtr: Streamlined Table Styling and Formatting for Reactable. Ανακτήθηκε από https://kcuilla.github.io/reactablefmtr/
Heads or Tails. (2020). Kaggle has 10 million registered users! Ανακτήθηκε από https://www.kaggle.com/discussions/general/332147
Hester, J., & Bryan, J. (2024). glue: Interpreted String Literals. Ανακτήθηκε από https://glue.tidyverse.org/
Kunst, J. (2022). highcharter: A Wrapper for the Highcharts Library. Ανακτήθηκε από https://jkunst.com/highcharter/
Lin, G. (2023). reactable: Interactive Data Tables for R. Ανακτήθηκε από https://glin.github.io/reactable/
O’Hara-Wild, M. (2018, Ιούλιος 10). Arranging Hex Stickers in R. Ανακτήθηκε από https://mitchelloharawild.github.io/mitchelloharawild.com//blog/hexwall
Qiu, Y., & See file AUTHORS for details., authors/contributors of the included fonts. (2020). showtextdb: Font Files for the showtext Package. https://doi.org/10.32614/CRAN.package.showtextdb
Qiu, Y., & See file AUTHORS for details., authors/contributors of the included fonts. (2024a). sysfonts: Loading Fonts into R. Ανακτήθηκε από https://github.com/yixuan/sysfonts
Qiu, Y., & See file AUTHORS for details., authors/contributors of the included software. (2024b). showtext: Using Fonts More Easily in R Graphs. Ανακτήθηκε από https://github.com/yixuan/showtext
R Core Team. (2025). R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. Ανακτήθηκε από https://www.R-project.org/
The World Bank. (2023). Labor force participation rate (. Ανακτήθηκε από https://genderdata.worldbank.org/indicators/sl-tlf-acti-zs/?geos=WLD&view=trend
Wickham, H. (2023). forcats: Tools for Working with Categorical Variables (Factors). Ανακτήθηκε από https://forcats.tidyverse.org/
Wickham, H., François, R., Henry, L., Müller, K., & Vaughan, D. (2023). dplyr: A Grammar of Data Manipulation. Ανακτήθηκε από https://dplyr.tidyverse.org
Wickham, H., & Henry, L. (2025). purrr: Functional Programming Tools. Ανακτήθηκε από https://purrr.tidyverse.org/
Wickham, H., Hester, J., & Bryan, J. (2024). readr: Read Rectangular Text Data. Ανακτήθηκε από https://readr.tidyverse.org
Wickham, H., Vaughan, D., & Girlich, M. (2024). tidyr: Tidy Messy Data. Ανακτήθηκε από https://tidyr.tidyverse.org
Zhu, H. (2024). kableExtra: Construct Complex Table with kable and Pipe Syntax. Ανακτήθηκε από http://haozhu233.github.io/kableExtra/

Αναφορά

Αναφορά BibTeX:
@online{2023,
  author = {, stesiam},
  title = {Ελληνική κοινότητα επιστήμης δεδομένων},
  date = {2023-05-06},
  url = {https://stesiam.com/el/posts/kaggle-greek-community/},
  langid = {el}
}
Για απόδοση ευγνωμοσύνης, παρακαλούμε αναφερθείτε σε αυτό το έργο ως:
stesiam. (2023, May 6). Ελληνική κοινότητα επιστήμης δεδομένων. Retrieved from https://stesiam.com/el/posts/kaggle-greek-community/