Pour répondre à cette question nous allons importer un jeu de données depuis l’Open data de la SNCF https://ressources.data.sncf.com/explore/dataset/recrutement-metiers-sncf/information/
Dans le cadre de ma Certification N°7WL9F27UGN Google Data Analytics Certificate obtenue en Déc 2022 et sans délai d’expiration en tant que Data Analyste le tout en Anglais. J’ai voulu faire une EDA, Exploratory Data Analysis, cette fois en Français pour en savoir plus sur les entreprises qui recrutent même si celle-ci la SNCF en l’occurence n’est pas dans mes cibles.
Je vais pocéder comme me l’ont appris mes enseignants chez Google que je remercie toujours en suivant les 6 phases pour mener à bien toute Analyse de Data:
Ask Prepare Process Analyze Share Act.
Les bonnes Questions Posées mènent au choix des données à Préparer et qui seront Traitées introduites nettoyées évidemment avec une copie en back-up ensuite Analysées puis Partagées aux décideurs et intéressés qui vont Agir.
Quelles sont les catégories ou secteurs qui ont les plus larges effectifs à la SNCF?
Y’a-t-il des differences structurelles ou conjoncturelles dans les recrutements à la SNCF?
Quoi d’autre pourrions-nous trouver dans les recrutements de la SNCF de 2012 à 2021?
Pour cela il nous faudra trouver un jeu de données de la SNCF qui sera le plus lisible possible et sous des formes utilisables pour des calculs et des comparaisons.
Ce sera un fichier CSV séparé de “;” à l’européenne comme disent les Américains et qu’il faudra traiter pour en faciliter la lecture et l’usage partout dans le monde.
D’une petite base à une autre plus grande avec des millions de lignes la trame de travail est la même.
Pour traiter une grosse quantité de données une bonne option serait d’utiliser la fonction options() comme suit
options(max.print = .Machine$integer.max)
qui est une des meilleures pour des centaines de milliers ou des millions de lignes comme j’ai eu à le faire dans les bases de données américaines.
Si besoin de faire des requêtes SQL en utilisant R au passage mon langage de programmation préféré même si beaucoup la trouve plus compliquée que Python.
Je vais utiliser les packages Tidyverse DataExplorer GGally et d’autres si besoin. Evidemment les Libraries respectivent sont chargées. Et à la fin la fonction sessionInfo() pour que les personnes plus tard y compris moi dans le futur puissent avoir le contexte de mon travail et les packages en cours à cette époque et voir mes progrès et corriger mes erreurs évidemment dans le temps.
Je ne vais pas utiliser de pipes %>% pour que beaucoup puissent me comprendre .
install.packages("tidyverse")
library(tidyverse)
install.packages("DataExplorer")
library(DataExplorer)
Vous remarquerez que je m’efforce d’éviter de trop utiliser l’Anglais quand notre langue la plus belle du monde, sans chauvinisme évidemment, le permet.
Avec readr j’ai déja chargé les données.
Une vue sommaire des colonnes ou variables serait est la plus utile comme ici même si ce n’est pas la plus belle.
La plus belle façon de voir les variables est celle-ci avec la fonction plot_str() du package DataExplorer.
Mais pas la plus efficace pour nous éclairer sur le le type de données et encore moins quand il y’a plusieurs centaines de colonnes après une requête SQL pour charger nos données.
Une autre vue de nos données est possible avec tibble que l’on traduirait par petite table ou tablette. Je préfère “ardoise” en Français comme en primaire.
Une fois que l’on a les données il nous faudra les analyser les faire parler comme une enquête .
La ou le Data Analyste cherche des indices et des empreintes que certains appellent patterns un anglicisme flou pour les bilingues .
Un indice découvert dans la phase initiale de l’analyse de ce jeu de données est la disparité salariale femme homme.
Est-ce volontaire ou le reflet de la réalité ?
Les données parlent et l’Analyste les montre aux décideurs ou intéressés ( stakeholders en Anglais) qui les traitent.
L’Analyste donne des directions aux décideurs pas des directives une nuance et une bonne boussole de travail en mon sens.
Pour creuser notre sujet ici continuons à faire parler les données.
L’écart et la disparité des recrutements semblent en défaveur des femmes car dans les métiers de Mainteneur, Aiguilleur, Conducteurs qui forment déjà l’essentiel des recrutements les femmes y sont sous-représentées.
La covariation est avérée en ce sens que plus les métiers dits physiques et occupés par des hommes recrutent plus l’ensemble des effectif montre cet écart.
Puisse que ces groupes de métiers physiques ou pénibles sont dans l’ensemble les plus gros volumes de recrutement de la SNCF.
C’est ce que je vais montrer avec cette visualisation en utilisant la fonction ggplot() de ggplot2 dans le package tidyverse.
{ggplot(data = recrutement_metiers_sncf) +} geom_point(mapping = aes(x = Sexe, y = Recrutement))
Plus coloré pour partager et faire comprendre des indices vues à l’intérieur ou insights en Anglais
{ggplot(data = recrutement_metiers_sncf) +} geom_col(mapping = aes(x = Sexe, y = Recrutement, fill = Sexe))
Pour voir l’évolution suivant les années en 3 ans d’intervalle dans les recrutements de la SNCF la proportion semble se répéter . Il y’a plus d’homme que de femme par proportion et ce à cause du gros bloc de recrutement que constituent les métiers dits pénibles physiquement.
Ce n’est que mon constat après enquête au décideurs d’expliquer en se basant sur les données.
Mon constat est sans misogynie aucune une Analyste aurait trouvé pareil si ce n’est mieux avec les données .
{ggplot(data = recrutement_metiers_sncf) +} geom_col(mapping = aes(x = Date, y = Recrutement, fill = Sexe, binwidth = 10))
Dans cette étude de cas après analyse l’aspect est mis sur les données et leur direction aux décideurs de comprendre et de prendre les directives nécessaires indiquées par les données des recrutements à la SNCF de 2012 à 2021.
Aux décideurs éventuels de prendres les bonnes directives suivant la direction montrée par les données elle-mêmes.
En essayant d’expliquer des réalités par les données comme l’auraient fait Colombo un homme ou l’agent Scully une femme .
J’espère avoir pu montrer ce que je sais faire en tant que débutant dans R qui a appris en Anglais et qui pense en Français.
Merci de vos retour et commentaires pour me faire progresser dans mon odyssée de Data Analyste .
Je finirai avec la fonction promise sessionInfo pour que dans le futur on puisse voir le contexte de mon travail et les versions utilisées de R et de ses packages et libraries.
sessionInfo()
## R version 4.2.2 (2022-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 22621)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=French_France.utf8 LC_CTYPE=French_France.utf8
## [3] LC_MONETARY=French_France.utf8 LC_NUMERIC=C
## [5] LC_TIME=French_France.utf8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.31 R6_2.5.1 lifecycle_1.0.3 jsonlite_1.8.4
## [5] magrittr_2.0.3 evaluate_0.19 stringi_1.7.8 cachem_1.0.6
## [9] rlang_1.0.6 cli_3.5.0 rstudioapi_0.14 jquerylib_0.1.4
## [13] bslib_0.4.2 vctrs_0.5.1 rmarkdown_2.19 tools_4.2.2
## [17] stringr_1.5.0 glue_1.6.2 xfun_0.36 yaml_2.3.6
## [21] fastmap_1.1.0 compiler_4.2.2 htmltools_0.5.4 knitr_1.41
## [25] sass_0.4.4