Autor: Ernesto Álvarez
Fecha: 2023-08-26
Este proyecto se llevó a cabo con el fin de recopilar información sobre las experiencias en ciencias de datos y aprendizaje de los “Afrikagglers”, quienes en términos “Sophie A”,creadora de la encuesta, son aquellas personas de origen africano quienes a su vez son pertenecientes a la comunidad de “Kagglers”.
En este proyecto se comparan datos de personas alrededor del mundo con los de personas del continente africano, esto teniendo en cuenta información como: Edad, sexo, ganacias, etc.
Para esto, es importante:
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(grid)
library(gridExtra)
##
## Attaching package: 'gridExtra'
##
## The following object is masked from 'package:dplyr':
##
## combine
library(ggforce)
Para este proyecto fue necesario utilizar las siguientes bases de datos:
Un conjunto de datos personalizado con la lista de países presentes en la encuesta de 2018 y cada continente correspondiente.
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 16716 Columns: 228
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (212): GenderSelect, Country, EmploymentStatus, StudentStatus, LearningD...
## dbl (13): Age, LearningCategorySelftTaught, LearningCategoryOnlineCourses, ...
## num (1): CompensationAmount
## lgl (2): WorkToolsFrequencyAngoss, WorkToolsFrequencyKNIMECommercial
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 23860 Columns: 395
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (395): Time from Start to Finish (seconds), Q1, Q1_OTHER_TEXT, Q2, Q3, Q...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 56 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Country, Continent
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# STRING PROCESSING
# countries
multipleChoice18$Q3 <- str_replace(multipleChoice18$Q3,"Iran, Islamic Republic of...","Iran")
multipleChoice18$Q3 <- str_replace(multipleChoice18$Q3,"I do not wish to disclose my location","Won't disclose")
multipleChoice18$Q3 <- str_replace(multipleChoice18$Q3,"United Kingdom of Great Britain and Northern Ireland","UK and NI")
multipleChoice18$Q3 <- str_replace(multipleChoice18$Q3,"United States of America","USA")
continents$Country <- str_replace(continents$Country,"Iran, Islamic Republic of...","Iran")
continents$Country <- str_replace(continents$Country,"I do not wish to disclose my location","Won't disclose")
continents$Country <- str_replace(continents$Country,"United Kingdom of Great Britain and Northern Ireland","UK and NI")
continents$Country <- str_replace(continents$Country,"United States of America","USA")
# CONVERT CATEGORICAL DATA TO FACTOR
# age groups
multipleChoice18$Q2 <- factor(multipleChoice18$Q2,
levels = c("18-21","22-24","25-29",
"30-34","35-39","40-44",
"45-49","50-54","55-59",
"60-69","70-79","80+"),
labels = c("18-21","22-24","25-29",
"30-34","35-39","40-44",
"45-49","50-54","55-59",
"60-69","70-79","80+"))
# degree
multipleChoice18$Q4 <- factor(multipleChoice18$Q4,
levels = c("Doctoral degree","Master’s degree","Bachelor’s degree","Professional degree",
"No formal education past high school",
"Some college/university study without earning a bachelor’s degree",
"I prefer not to answer"),
labels = c("PhD","Master","Bachelor","Professional",
"High school","No degree","Won't disclose"))
# undergraduate major
multipleChoice18$Q5 <- factor(multipleChoice18$Q5,
levels = c("Medical or life sciences (biology, chemistry, medicine, etc.)",
"Computer science (software engineering, etc.)",
"Engineering (non-computer focused)",
"Mathematics or statistics",
"A business discipline (accounting, economics, finance, etc.)",
"Environmental science or geology",
"Social sciences (anthropology, psychology, sociology, etc.)",
"Physics or astronomy",
"Information technology, networking, or system administration",
"I never declared a major",
"Other",
"Humanities (history, literature, philosophy, etc.)") ,
labels = c("Medical/life sciences", "Computer science",
"Engineering", "Mathematics/statistics",
"A business discipline", "Physics/astronomy",
"IT/Network/Sys. admin", "No major declared",
"Humanities", "Env. science", "Social sciences", "Other"))
# In what industry is your current employer?
multipleChoice18$Q7 <- factor(multipleChoice18$Q7,
levels = c("Retail/Sales", "I am a student",
"Computers/Technology", "Accounting/Finance",
"Academics/Education",
"Insurance/Risk Assessment","Other",
"Energy/Mining", "Non-profit/Service",
"Marketing/CRM", "Government/Public Service",
"Manufacturing/Fabrication",
"Online Service/Internet-based Services",
"Broadcasting/Communications",
"Medical/Pharmaceutical",
"Online Business/Internet-based Sales",
"Military/Security/Defense",
"Shipping/Transportation",
"Hospitality/Entertainment/Sports"),
labels = c("Retail / Sales", "Student",
"Computers / Technology", "Accounting / Finance",
"Academics / Education",
"Insurance / Risk Assessment","Other",
"Energy / Mining", "Non-profit / Service",
"Marketing / CRM", "Government / Public Service",
"Manufacturing / Fabrication",
"Online Service / Internet-based Services",
"Broadcasting / Communications",
"Medical / Pharmaceutical",
"Online Business / Internet-based Sales",
"Military / Security/Defense",
"Shipping / Transportation",
"Hospitality / Entertainment/Sports"))
# experience in current role
multipleChoice18$Q8 <- factor(multipleChoice18$Q8, levels = c("0-1","1-2","2-3",
"3-4","4-5","5-10",
"10-15","15-20","20-25",
"25-30","30+"))
# yearly compensation
multipleChoice18$Q9 <- factor(multipleChoice18$Q9,
levels = c("I do not wish to disclose my approximate yearly compensation",
"0-10,000","10-20,000","20-30,000","30-40,000",
"40-50,000","50-60,000","60-70,000","70-80,000",
"80-90,000","90-100,000","100-125,000",
"125-150,000","150-200,000","200-250,000",
"250-300,000","300-400,000", "400-500,000","500,000+"),
labels = c("Won't disclose",
"0-10,000","10-20,000","20-30,000","30-40,000",
"40-50,000","50-60,000","60-70,000","70-80,000",
"80-90,000","90-100,000","100-125,000",
"125-150,000","150-200,000","200-250,000",
"250-300,000","300-400,000", "400-500,000","500,000+"))
# time spent coding
multipleChoice18$Q23 <- factor(multipleChoice18$Q23, levels = c("0% of my time",
"1% to 25% of my time",
"25% to 49% of my time",
"50% to 74% of my time",
"75% to 99% of my time",
"100% of my time"),
labels = c("0%","1% to 25%","25% to 49%",
"50% to 74%","75% to 99%","100%"))
# coding experience
multipleChoice18$Q24 <- factor(multipleChoice18$Q24,
levels = c("I have never written code and I do not want to learn",
"I have never written code but I want to learn",
"< 1 year","1-2 years","3-5 years","5-10 years",
"10-20 years","20-30 years","30-40 years", "40+ years") ,
labels = c("I don't write code and don't want to learn",
"I don't write code but want to learn",
"< 1 year", "1-2 years", "3-5 years",
"5-10 years", "10-20 years","20-30 years","30-40 years", "40+ years")
)
# For how many years have you used machine learning methods
multipleChoice18$Q25 <- factor(multipleChoice18$Q25,
levels = c("I have never studied machine learning and I do not plan to",
"I have never studied machine learning but plan to learn in the future",
"< 1 year", "1-2 years", "2-3 years", "3-4 years", "4-5 years",
"5-10 years", "10-15 years", "20+ years"),
labels = c("Never studied, do not plan to",
"Never studied, plan to learn",
"< 1 year", "1-2 years", "2-3 years", "3-4 years", "4-5 years",
"5-10 years", "10-15 years", "20+ years"))
# use of machine learning in industries
multipleChoice18$Q10 <- factor(multipleChoice18$Q10,
levels = c("I do not know",
"No (we do not use ML methods)",
"We are exploring ML methods (and may one day put a model into production)",
"We recently started using ML methods (i.e., models in production for less than 2 years)",
"We have well established ML methods (i.e., models in production for more than 2 years)",
"We use ML methods for generating insights (but do not put working models into production)"),
labels = c("I do not know", "No", "Exploring ML methods",
"Recently started", "Well established ML methods",
"For generating insights"))
# expertise in data science
multipleChoice18$Q40 <- factor(multipleChoice18$Q40,
levels = c("Independent projects are equally important as academic achievements",
"Independent projects are much more important than academic achievements",
"Independent projects are slightly more important than academic achievements",
"Independent projects are slightly less important than academic achievements",
"Independent projects are much less important than academic achievements",
"No opinion; I do not know"),
labels = c("Equally important",
"Much more important",
"Slightly more important",
"Less important",
"Much less important",
"No opinion/Don't know"))
# are you a data scientist?
multipleChoice18$Q26 <- factor(multipleChoice18$Q26,
levels = c("Definitely yes", "Probably yes", "Maybe",
"Probably not", "Definitely not"),
labels = c("Definitely yes", "Probably yes", "Maybe",
"Probably not", "Definitely not"))
En esta sección se evalúa la nacionalidad de los participantes. En la primera gráfica generada se observa el número de personas por continente, dando como resultados el continente asiático como el contiente con mayor número de encuestados con 9186, seguido del continente europeo con 5493 personas. El continente africano se sitúa quinto con 681 personas encuestadas y se encuentra resaltado en la gráfica.
newMultipleChoice %>%
group_by(Continent) %>%
summarise(Count = length(Continent)) %>%
mutate(highlight_flag = ifelse((Continent == "Africa"), TRUE, FALSE)) %>%
ggplot(aes(x = reorder(Continent, -Count), y = Count, fill = Continent)) +
geom_bar(aes(fill = highlight_flag), stat = "identity", color = "black") +
geom_text(aes(label = as.character(Count)),
position = position_dodge(width = 1),
hjust = 0.5, vjust = -0.25, size = 3) +
scale_fill_brewer(palette = "inferno") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Número de encuestados",
x = "", y = "Count", fill = "",
caption = "África y el mundo")
## Warning in pal_name(palette, type): Unknown palette inferno
Asimismo, teniendo en cuenta que el objetivo del estudio era conocer las experiencias de las personas de África, fue de interés saber la diferencia del número de encuestados entre los años 2017 y 2018 en países de dicho continente, por lo cual se generó una gráfica donde se observó que para el año 2018 el número de participantes aumentó (gráfica N°2), de igual manera se observa en la tercera gráfica la distribución de mujeres y hombres encuestados en cada país.
p1 <- df %>%
group_by(Country,Year) %>%
summarise(Count = length(Country)) %>%
ggplot(aes(x = Year, y = Count, group = Country)) +
geom_line(aes(color = Country), size = 0.5) +
geom_point(aes(color = Country), size = 4) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text = element_text(size = 12),
legend.position = "bottom",
legend.title=element_blank(),
legend.text = element_text(size = 10)) +
labs(title = "Número de encuestados",
x = "", y = "Count", fill = "", caption = "Acerca de nosotros")
## `summarise()` has grouped output by 'Country'. You can override using the
## `.groups` argument.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p2 <- afroCountries %>%
group_by(Q1,Q3) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
summarise(Count = length(Q3)) %>%
ggplot(aes(x = reorder(Q3,-Count), y = Count, fill = Q1)) +
geom_bar(stat = "identity") +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.position = "top",
legend.text = element_text(size = 10)) +
labs(title = "País de residencia", x = "", y = "", fill = "",
caption = "Acerca de nosotros")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
grid.arrange(p1,p2, ncol = 2)
En África, Nigeria sobresalió como el país con el mayor número de encuestados, a pesar de tener una población más pequeña, con alrededor de 215 mujeres y 170 hombres. Por otro lado, Morocco registró la cifra más baja, con 70 mujeres y 55 hombres. Cabe recalcar que, Tunisia destacó por tener la mayor proporción de mujeres en comparación con hombres.
multipleChoice18 %>%
group_by(Q1,Q3) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q3)) %>%
summarise(Count = n()) %>%
spread(Q1,Count) %>%
mutate(ratio = Female/Male) %>%
mutate(highlight_flag = ifelse((Q3 == "Egypt" | Q3 == "Kenya" | Q3 == "Morocco" |
Q3 == "Nigeria" | Q3 == "Tunisia" | Q3 == "South Africa"), T, F)) %>%
ggplot(aes(x = reorder(Q3,-ratio), y = ratio, fill = ratio)) +
geom_bar(aes(fill = highlight_flag), stat = "identity") +
scale_fill_brewer(palette = "Paired") +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 9.5, angle = -90,
hjust = 0 , vjust = 0.5)) +
labs(title = "Female to Male ratio",
x = "", y = "Ratio", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
newMultipleChoice %>%
group_by(Continent,Q1) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
summarise(Count = n()) %>%
spread(Q1,Count) %>%
mutate(ratio = Female/Male) %>%
mutate(highlight_flag = ifelse((Continent == "Africa"), T, F)) %>%
ggplot(aes(x = reorder(Continent,-ratio), y = ratio, fill = ratio)) +
geom_bar(aes(fill = highlight_flag), stat = "identity", color = "grey") +
scale_fill_brewer(palette = "Pastel 2") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 12),
axis.text.x = element_text(size = 12)) +
labs(title = "Proporción mujeres/hombres",
x = "", y = "Ratio", fill = "",
caption = "África y el mundo")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
## Warning in pal_name(palette, type): Unknown palette Pastel 2
Más del 50% de los encuestados tienen entre 22 y 29 años, y no hay participantes mayores de 69 años. Los hombres son mayoría entre los 22 y 24 años, en contraste con la distribución general de edades donde predominan en su mayoría en los 25 y 29 años. Las mujeres, en su mayoría, se encuentran en el grupo de edad de 25 a 29 años, al igual que en la mayoría de los países. También se observa la ausencia de mujeres en ciertos grupos de edad.
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
ggplot(data = temp,
aes(x = Q2, fill = Q1)) +
geom_bar(data = filter(temp, Q1 == "Male"), aes(y = Count), stat = "identity") +
geom_bar(data = filter(temp, Q1 == "Female"), aes(y = -1*Count), stat = "identity") +
scale_y_continuous(breaks = seq(-50,150,50),
labels = as.character(c(seq(50,0,-50), seq(50,150,50)))) +
scale_fill_brewer(palette = "Pastel1") +
coord_flip() +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Distribución de edades en África",
x = "Grupos de edades (años)", y = "Número de personas", fill = "",
caption = "")
En África, la mayoría obtiene títulos de Licenciatura, mientras que en otros continentes, como Europa, predomina el título de Maestría. Sin embargo, en África, destaca que un mayor porcentaje de mujeres obtiene títulos de Maestría y Doctorado en comparación con los hombres. Además, una minoría de mujeres carece de un título universitario, a diferencia de los hombres.
p1 <- newMultipleChoice %>%
group_by(Continent,Q4) %>%
filter(!is.na(Q4)) %>%
summarise(Count = length(Continent)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = Q4, y = pct, group = Continent)) +
geom_line(aes(color = Continent), size = 0.5) +
geom_point(aes(color = Continent), size = 2) +
scale_x_discrete(labels = function(x) str_wrap(x,width = 5)) +
scale_y_discrete(labels = function(x) str_wrap(x, width = 30))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Educational background",
x = "", y = "%", fill = "",
caption = "")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
p2 <- afroCountries %>%
group_by(Q1,Q4) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q4)) %>%
summarise(Count = length(Q4)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = "", y = pct, fill = Q4)) +
geom_col(width = 1) +
scale_fill_brewer(palette = "Set3") +
facet_grid(Q1~.) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
legend.text = element_text(size = 11)) +
labs(title = "Degree",
x = "", y = "", fill = "Degree",
caption = "About us")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
grid.arrange(p1,p2,ncol = 2)
El título de pregrado más popular entre los Kagglers es Ciencias de la Computación. Los otros dos principales son Matemáticas/Estadísticas e Ingeniería.
newMultipleChoice %>%
group_by(Continent,Q5) %>%
filter(!is.na(Q5)) %>%
summarise(Count = length(Q5)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot() +
geom_point(mapping = aes(x = Continent, y = reorder(Q5,pct),
size = pct, color = Q5)) +
scale_fill_gradient(low = "firebrick1", high = "royalblue4") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 5)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 12),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Carreras de pregrado",
x = "", y = "", fill = "",
caption = "África y el mundo")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
En África, se destaca que un mayor porcentaje de mujeres encuestadas poseen formación en Ciencias de la Computación y Matemáticas/Estadísticas en comparación con los hombres encuestados. Además, es relevante observar que un porcentaje superior de hombres no ha declarado una especialidad, lo que podría estar relacionado con la categoría de “sin título” como su formación académica.
afroCountries %>%
group_by(Q1,Q5) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q5)) %>%
summarise(Count = length(Q5)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = reorder(Q5,-pct), y = pct, group = Q1)) +
geom_point(aes(color = Q1), size = 2) + geom_line(aes(color = Q1), size = 1) +
scale_fill_brewer(palette = "Pastel1") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 12, angle = -90,hjust = 0,vjust = 0.5),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Programas de pregrado",
x = "", y = "%", fill = "",
caption = "Acerca de nosotros")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
África y Asia se destacan por tener la proporción más alta de encuestados que están actualmente estudiando. En contraste, en Europa, América del Norte y América del Sur, la mayoría de los encuestados están empleados en el campo de la ciencia de datos. Un hallazgo significativo es que la mayoría de los estudiantes son hombres, representando un 28% del total, mientras que la mayoría de las mujeres están involucradas en campos como ciencia de datos, análisis de datos, ingeniería de software, entre otros. Esto sugiere que las mujeres muestran un menor porcentaje de desempleo en comparación con los hombres en esta área.
newMultipleChoice %>%
group_by(Continent,Q6) %>%
filter(!is.na(Q6)) %>%
summarise(Count = length(Continent)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot() +
geom_point(mapping = aes(x = Continent, y = reorder(Q6,pct),
size = 5*pct, color = Q6)) +
scale_x_discrete(labels = function(x) str_wrap(x,width = 8)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.y = element_text(size = 10),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Rol actual",
x = "", y = "", fill = "",
caption = "África y el mundo")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
afroCountries %>%
group_by(Q1,Q6) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q6)) %>%
summarise(Count = length(Q6)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = reorder(Q6,-pct), y = pct, group = Q1)) +
geom_point(aes(color = Q1), size = 2) + geom_line(aes(color = Q1), size = 1) +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 12),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Rol actual", x = "", y = "%", fill = "",
caption = "Acerca de nosotros")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
En la representación gráfica, se evidencia una mayor proporción de estudiantes masculinos en comparación con las estudiantes femeninas, y se destaca un menor nivel de desempleo en el grupo de mujeres. Asimismo, se observa que la mayoría de los periodistas de datos tienen su origen en Túnez y Nigeria, mientras que la mayor concentración de científicos de datos se localiza en Sudáfrica. Estos hallazgos proporcionan una visión relevante de la distribución de género y las concentraciones geográficas en estos campos académicos y profesionales.
afroCountries %>%
group_by(Q6,Q3) %>%
filter(!is.na(Q6)) %>%
summarise(Count = length(Q6)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q6, y = Q3, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 12),
legend.text = element_text(size = 11)) +
labs(title = "Current role by country",
x = "", y = "", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
Se dice que es de interés en investigar el origen del aumento de los encuestados africanos de un año a otro. En un principio, se asumió que este incremento estaba relacionado principalmente con estudiantes, ya que en la encuesta de 2017, las mujeres que respondieron eran exclusivamente estudiantes. Sin embargo, después de crear un gráfico circular que comparaba a los participantes estudiantes con los no estudiantes, se observó que el porcentaje de estudiantes había disminuido en el presente año para ambos géneros. En la actualidad, este porcentaje es inferior a la suma de todas las demás ocupaciones combinadas.
propStud17 <- afroCountries17 %>%
group_by(GenderSelect,StudentStatus) %>%
filter(GenderSelect == "Female" | GenderSelect == "Male") %>%
filter(!is.na(StudentStatus)) %>%
summarise(Count = length(StudentStatus)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = "", y = pct, fill = StudentStatus)) +
geom_col(width = 1) +
coord_polar("y", start = pi / 3) +
scale_fill_brewer(palette = "Pastel2") +
facet_wrap(GenderSelect~.) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
legend.position = "top") +
labs(title = "Proporción de estudiantes", subtitle = "2017", x = "", y = "", fill = "",
caption = "")
## `summarise()` has grouped output by 'GenderSelect'. You can override using the
## `.groups` argument.
propStud <- propStud18 %>%
group_by(Q1,Q6) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q6)) %>%
summarise(Count = length(Q6)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = "", y = pct, fill = Q6)) +
geom_col(width = 1) +
coord_polar("y", start = pi / 3) +
scale_fill_brewer(palette = "Pastel2") +
facet_wrap(Q1~.) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
legend.position = "top") +
labs(title = "Proporción de estudiantes", subtitle = "2018", x = "", y = "", fill = "",
caption = "Sobre nosotros")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
grid.arrange(propStud17,propStud, ncol = 2)
En comparación entre los roles actuales en 2018 y los de 2017, se observa un aumento en numerosas ocupaciones. Sin embargo, los que experimentaron el mayor incremento fueron los campos de ciencia de datos, análisis de datos e ingeniería de software.
# 2017
p1 <- afroCountries17 %>%
group_by(CurrentJobTitleSelect) %>%
filter(!is.na(CurrentJobTitleSelect)) %>%
summarise(Count = length(CurrentJobTitleSelect)) %>%
ggplot(aes(x = reorder(CurrentJobTitleSelect, Count), y = Count, fill = CurrentJobTitleSelect)) +
geom_col() +
coord_flip() +
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.y = element_text(size = 8),
axis.text.x = element_text(size = 11),
legend.position = "none") +
labs(title = "Rol actual", subtitle = "2017", x = "", y = "Número de personas", fill = "",
caption = "")
# 2018
p2 <- afroCountries %>%
group_by(Q6) %>%
filter(Q6 != "Student") %>%
filter(!is.na(Q6)) %>%
summarise(Count = length(Q6)) %>%
ggplot(aes(x = reorder(Q6, Count), y = Count, fill = Q6)) +
geom_col() +
coord_flip()+
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.y = element_text(size = 8),
axis.text.x = element_text(size = 11),
legend.position = "none") +
labs(title = "Rol actual", subtitle = "2018", x = "", y = "Número de personas", fill = "",
caption = "Sobre nosotros")
grid.arrange(p1,p2, ncol = 2)
En la mayoría de las categorías, como estudiantes, ingenieros de software, empleados, científicos, ingenieros y analistas de datos, se observa que la mayoría de los individuos tienen menos de un año de experiencia. En contraste, en la categoría de investigadores científicos, la mayoría posee 5-10 años de experiencia.
afroCountries %>%
group_by(Q6,Q8) %>%
filter(!is.na(Q6)) %>%
filter(!is.na(Q8)) %>%
summarise(Count = length(Q8)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q8, y = Q6, fill = Count)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Experiencia en el rol actual",
x = "Años", y = "", fill = "",
caption = "Sobre nosotros")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En la mayoría de los casos estudiantiles, existe una falta de conocimiento sobre la incorporación de técnicas de Machine Learning en los programas educativos. Aunque es importante destacar que en la mayoría de las industrias, la implementación de métodos de Machine Learning no es una práctica extendida, se aprecia que ciertas empresas han comenzado a explorar y adoptar métodos de Machine Learning en sus procesos y operaciones.
afroCountries %>%
group_by(Q6,Q10) %>%
filter(!is.na(Q10)) %>%
summarise(Count = length(Q10)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q10, y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 10),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Uso de ML en industrias",
x = "", y = "", fill = "",
caption = "Uso de Machine learning")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La mayoría de los profesionales en este campo se dedican al análisis y comprensión de datos con el propósito de influir en las decisiones empresariales o de productos. Además, es importante destacar que la mayoría de ellos realizan cada una de estas tareas en algún momento, aunque la frecuencia varía considerablemente entre las diferentes ocupaciones. Por ejemplo, los asistentes de investigación y los científicos llevan a cabo investigaciones en mayor medida que otros grupos. Por otro lado, los ingenieros de datos y especialistas en bases de datos se centran en la construcción y ejecución de infraestructuras de datos. En contraste, los vendedores y los periodistas de datos no se involucran en ninguna de estas tareas específicas.
afroCountries %>%
select(Q6,Q11_Part_1,Q11_Part_2, Q11_Part_3,Q11_Part_4,Q11_Part_5,Q11_Part_6,Q11_Part_7)%>%
gather(2:8, key = "questions", value = "Function")%>%
group_by(Q6,Function)%>%
filter(!is.na(Function))%>%
summarise(Count = length(Function))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Function, y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 9),
axis.text.y = element_text(size = 9),
legend.position = "none") +
labs(title = "Day to day function",
x = "", y = "", fill = "",
caption = "Machine learning use")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La mayoría de las personas tiene una experiencia de codificación de menos de 5 años; no obstante, es notable que la mayoría cuenta con tan solo 1 año de experiencia, siendo el número de mujeres considerablemente más bajo (123) en comparación con el de hombres (136). Además, al observar los datos específicos de los países del continente africano, se destaca que en Nigeria predominan las personas con 1 año de experiencia, en Marruecos aquellas con una experiencia de 1-2 años, en Sudáfrica las que tienen entre 3-5 y 10-20 años de experiencia, en Kenia las que cuentan con una experiencia de 5-10 años, y finalmente, en Túnez se encuentran aquellas con una experiencia de 30-40 años en codificación.
p1 <- afroCountries %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
group_by(Q1,Q24) %>%
filter(!is.na(Q24)) %>%
summarise(Count = length(Q24)) %>%
ggplot(aes(x = Q24, y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.x = element_text(size = 10, angle = -90,hjust = 0,vjust = 0.5),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Coding experience",
x = "", y = "Count", fill = "")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
p2 <- afroCountries %>%
group_by(Q3,Q24) %>%
filter(!is.na(Q3)) %>%
filter(!is.na(Q24)) %>%
summarise(Count = length(Q24)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = Q24, y = pct, group = Q3)) +
geom_point(aes(color = Q3), size = 1.5) + geom_line(aes(color = Q3), size = 0.5) +
scale_fill_brewer(palette = "Set3") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 15)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 10, angle = -90,hjust = 0,vjust = 0.5),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Coding experience by country",
x = "", y = "%", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q3'. You can override using the `.groups`
## argument.
grid.arrange(p1,p2,ncol = 2)
De igual manera, se observa que la mayoría de los estudiantes, ingenieros de software, vendedores, asistentes de investigación, gerentes de proyectos, investigadores principales, desempleados, analistas de marketing, defensores de los desarrolladores, analistas de datos, consultores y oficiales jefes poseen 1 año de experiencia en codificación. Asimismo, en el caso de los científicos, ingenieros de datos y analistas de negocios, la mayoría cuenta con una experiencia de 1-2 años. Finalmente, se destaca que la mayor parte de los estadísticos, investigadores científicos y gerentes tienen una experiencia en codificación de 3-5 años.
afroCountries %>%
group_by(Q6,Q24) %>%
filter(!is.na(Q24)) %>%
summarise(Count = length(Q24)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q24, y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Coding experience", x = "", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La elección del lenguaje de programación varía en función del rol o posición laboral de la persona. Por ejemplo:
En gran parte de los estudiantes, ingenieros de software, vendedores, investigadores científicos, asistentes de investigación, científicos, analistas e ingenieros de datos, consultores y gerentes jefes es común el uso de Python.
Por otro lado, la mayoría de los estadísticos optan por R, mientras que los Ingenieros de bases de datos tienden a preferir SQL.
afroCountries %>%
group_by(Q6,Q17) %>%
filter(!is.na(Q17)) %>%
summarise(Count = length(Q17)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = reorder(Q17,-pct), y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = 45, hjust = 1),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Most used programming language", x = "", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
Además, se observa que la mayoría de las personas en general recomiendan el uso de Python. Dentro de este grupo se encuentran estudiantes, estadísticos, ingenieros de software, vendedores, investigadores científicos, asistentes de investigación, gerentes de proyecto, investigadores principales, desempleados, gerentes, defensores de desarrolladores, DBA, científicos, ingenieros y analistas de datos, consultores, directores generales y analistas de negocios que respaldan el uso de este lenguaje de programación.
afroCountries %>%
group_by(Q6,Q18) %>%
filter(!is.na(Q18)) %>%
summarise(Count = length(Q18)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = reorder(Q18,-pct), y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Recommended programming language", x = "", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En este contexto, se observa que en el eje X se representa el lenguaje de programación que utilizan las personas, mientras que en el eje Y se muestra el lenguaje de programación que recomiendan. Se destaca que la mayoría de las personas que utilizan un determinado lenguaje, como Python, tienden a recomendar ese mismo lenguaje. Sin embargo, es interesante notar que aquellos que utilizan R continúan recomendando R, lo que sugiere una preferencia arraigada en la comunidad de usuarios de R.
afroCountries %>%
group_by(Q17,Q18) %>%
filter(!is.na(Q17)) %>%
filter(!is.na(Q18)) %>%
summarise(Count = length(Q17)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = reorder(Q17,pct), y = Q18, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 20))+
geom_text(aes(label = as.character(Count)), color = "white", size = 3) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
axis.text.x = element_text(angle = 35, hjust = 1),
legend.text = element_text(size = 11)) +
labs(title = "Most used vs. Recommended programming languages",
x = "Most used", y = "Recommended",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q17'. You can override using the `.groups`
## argument.
Se observa que los hombres pasan más tiempo programando que las mujeres. Aproximadamente, más del 35% de los hombres dedican del 50% al 70% de su tiempo programando, en cambio, la mayoría de las mujeres (31%) destinan un 25 a 49% de tiempo a esta actividad.
afroCountries %>%
group_by(Q1,Q23) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q23)) %>%
summarise(Count = length(Q23)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = Q23, y = pct, group = Q1)) +
geom_point(aes(color = Q1), size = 2) + geom_line(aes(color = Q1), size = 1) +
scale_fill_brewer(palette = "Set3") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 12),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Time spent actively coding",
x = "of time", y = "% of people", fill = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
En cuanto a su ocupación, se destaca que la mayoría de los vendedores, investigadores científicos, asistentes de investigación, investigadores principales, gerentes y analistas de negocios pasan del 1 al 25% de su tiempo codificando. Por otro lado, es importante mencionar que la mayor parte de los estudiantes, ingenieros de software, analistas de marketing, científicos, analistas e ingenieros de datos dedican la mayor parte de su tiempo a la codificación, aproximadamente del 50 al 74%.
afroCountries %>%
group_by(Q6,Q23) %>%
filter(!is.na(Q23)) %>%
summarise(Count = length(Q23)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q23, y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "#CDC9C9", high = "firebrick1") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Time spent coding",
x = "of time", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
El IDE más utilizado es Jupyter/Ipython, dentro del cual se encuentra la mayoría de los estudiantes, ingenieros de software, investigadores científicos, asistentes de investigación, otros, desempleados, científicos y analistas de datos, gerentes de jefes y analistas de negocios. En segundo lugar, se encuentra Notepad++, que también es utilizado por parte de los mencionados anteriormente.
afroCountries %>%
select(Q6,30:45)%>%
gather(2:16, key = "questions", value = "IDEs")%>%
group_by(Q6,IDEs)%>%
filter(!is.na(IDEs))%>%
summarise(Count = length(IDEs))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(IDEs,-pct), y = Q6, fill = Count)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "IDEs",
x = "", y = "", fill = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En su mayoría, los encuestados no utilizan portátiles alojados, siendo este patrón común entre estudiantes, estadísticos, ingenieros de software, investigadores científicos, analistas de investigación, gerentes, analistas y científicos de datos, consultores, gerentes jefes y analistas de negocios. Por otro lado, Kaggle Kernels es la elección preferida por otros, como los científicos de datos.
afroCountries %>%
select(Q6,Q14_Part_1:Q14_Part_11)%>%
gather(2:12, key = "questions", value = "Hosted_Notebook")%>%
group_by(Q6,Hosted_Notebook)%>%
filter(!is.na(Hosted_Notebook))%>%
summarise(Count = length(Hosted_Notebook))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(Hosted_Notebook,-pct), y = Q6, fill = Count)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Hosted notebook used at school or work",
subtitle = "(past 5 years)",
x = "", y = "", fill = "",
caption = "")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En su mayoría, los encuestados, en particular estudiantes y científicos de datos, prefieren utilizar entornos de desarrollo locales/alojados para el análisis de datos. En contraste, la mayoría de los ingenieros de software optan por herramientas de estadísticas básicas de software como Microsoft Excel, Google Sheets, entre otros.
afroCountries %>%
group_by(Q6,Q12_MULTIPLE_CHOICE) %>%
filter(!is.na(Q12_MULTIPLE_CHOICE)) %>%
summarise(Count = length(Q12_MULTIPLE_CHOICE)) %>%
ggplot(aes(x = reorder(Q12_MULTIPLE_CHOICE,-Count), y = Q6, fill = Count)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Primary tools for data analysis",
x = "", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La mayoría de los encuestados africanos, especialmente mujeres, se autodenominan científicos de datos. En comparación con otros continentes, los Afrikagglers tienen el porcentaje más alto (59.89%) de personas que se identifican como científicos de datos, lo que refleja una mayor confianza en esta identidad. En contraste, los habitantes del continente de Oceanía son los que menos tienden a considerarse científicos de datos.
afroCountries %>%
filter(Q1 == "Female"| Q1 == "Male") %>%
group_by(Q1,Q26) %>%
filter(!is.na(Q26)) %>%
summarise(Count = length(Q26)) %>%
ggplot(aes(x = Q26, y = Count, fill = Q1))+
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 8)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 9),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Think of themself as a data scientist",
x = "", y = "Count", fill = "",
caption = "Personal views")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
En comparación con otros continentes, los Afrikagglers muestran una mayor confianza en su identidad como científicos de datos: un 59.89% respondió “Sí”.
newMultipleChoice %>%
group_by(Continent,Q26) %>%
filter(!is.na(Q26)) %>%
summarise(Count = length(Q26)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q26, y = pct, group = Continent)) +
geom_line(aes(color = Continent), size = 0.5) +
geom_point(aes(color = Continent), size = 2) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Think of themself as a data scientist",
x = "", y = "%", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
Los Afrikagglers han comenzado a utilizar métodos de aprendizaje automático recientemente, siendo la mayoría de ellos usuarios con menos de un año de experiencia en esta área.
afroCountries %>%
group_by(Q6,Q25) %>%
filter(!is.na(Q25)) %>%
summarise(Count = length(Q25)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q25, y = Q6, fill = Count)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15)) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Usage of machine learning at work/school",
x = "", y = "",
caption = "Coding experience")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En relación a los productos de aprendizaje automático, es destacable que la mayoría de los encuestados nunca los ha utilizado. Solo un reducido número de personas ha tenido experiencia en su uso, siendo SAS la opción más común entre aquellos que lo han utilizado.
afroCountries %>%
select(Q6,152:194)%>%
gather(2:44, key = "questions", value = "ML_Products")%>%
group_by(Q6,ML_Products)%>%
filter(!is.na(ML_Products))%>%
summarise(Count = length(ML_Products))%>%
mutate(pct = prop.table(Count)*100)%>%
top_n(5,pct) %>%
ggplot() +
geom_point(mapping = aes(x = reorder(ML_Products,-Count), y = Q6,
size = pct, color = ML_Products)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 8, angle = 45, hjust = 1),
axis.text.y = element_text(size = 8),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Machine learning products (past 5 years)",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
Sin embargo, es importante destacar que esta tendencia no se limita
únicamente al continente africano, sino que se observa en la mayoría de
los continentes participantes:
En otros continentes como Oceanía y Norteamérica, el uso de SAS es más común.
En África, en cambio, se tiende a utilizar con mayor frecuencia Azure Machine Learning Studio y Cloudera.
Europa muestra una preferencia marcada por Cloudera.
Esto señala diferencias en las preferencias de las herramientas de aprendizaje automático en distintas regiones geográficas.
newMultipleChoice %>%
select(Continent,152:194)%>%
gather(2:44, key = "questions", value = "ML_Products")%>%
group_by(Continent,ML_Products)%>%
filter(!is.na(ML_Products))%>%
summarise(Count = length(ML_Products))%>%
mutate(pct = prop.table(Count)*100)%>%
top_n(5,Count) %>%
ggplot() +
geom_point(mapping = aes(x = Continent, y = reorder(ML_Products,pct),
size = pct, color = ML_Products)) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 8),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Machine learning products (past 5 years)",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
Los marcos de aprendizaje automático más prevalentes en todos los continentes son Scikit-Learn, TensorFlow y Keras, y su uso es más prominente entre estudiantes, ingenieros de software, investigadores científicos, ingenieros, analistas y científicos de datos. En contraste, el marco menos empleado es Mxnet.
afroCountries %>%
select(Q6,Q19_Part_1:Q19_Part_19)%>%
gather(2:19, key = "questions", value = "ML_Framework")%>%
group_by(Q6,ML_Framework)%>%
filter(!is.na(ML_Framework))%>%
summarise(Count = length(ML_Framework))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(ML_Framework,-Count), y = Q6, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
axis.text.y = element_text(size = 10),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Machine learning framework (past 5 years)",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La mayoría de las mujeres y hombres encuestados confían en su capacidad para comprender y explicar los resultados de muchos, aunque no todos, los modelos de aprendizaje automático. Por otro lado, otra parte de los encuestados considera que la mayoría de los modelos de ML son “cajas negras”, pero tienen la certeza de que los expertos son capaces de explicar los resultados de estos modelos.
afroCountries %>%
group_by(Q1,Q48) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q48)) %>%
filter(!is.na(Q1)) %>%
ggplot(aes(x = Q1, fill = Q48)) +
geom_bar(position = "fill") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
scale_fill_brewer(palette = "Set3") +
coord_flip() +
labs(title = "Do you consider ML as 'black boxes'?",
x = "", y = "", fill = "", caption = "Personal views") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
legend.position = "bottom",
axis.text = element_text(size = 12),
legend.text = element_text(size = 10)) +
guides(fill = guide_legend(ncol = 1))
En la mayoría de los países del continente de África, la elección de métricas se inclina hacia la consideración de la precisión en primer lugar, seguida de los ingresos y/u objetivos comerciales. No obstante, en este contexto, Sudáfrica y Kenya muestran una mayor orientación hacia los objetivos comerciales, mientras que Egipto prefiere priorizar la precisión.
afroCountries %>%
select(Q42_Part_1:Q42_Part_5,Q3) %>%
gather(1:5, key = "questions", value = "metrics")%>%
group_by(metrics,Q3) %>%
filter(!is.na(metrics)) %>%
filter(!is.na(Q3)) %>%
ggplot(aes(x = Q3, fill = metrics)) +
geom_bar(position = "fill") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 15)) +
scale_fill_brewer(palette = "Set3") +
labs(title = "Metrics used to measure model success",
x = "", y = "", fill = "", caption = "Machine learning usage") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11),
legend.position = "bottom") +
guides(fill = guide_legend(ncol = 1))
Este patrón se repite en los otros continentes, donde la preferencia principal recae en las métricas que valoran la precisión. Europa destaca en este aspecto, con el porcentaje más alto de preferencia por la precisión, alcanzando el 44,39%.
newMultipleChoice %>%
select(Continent,Q42_Part_1:Q42_Part_5)%>%
gather(2:6, key = "questions", value = "Metrics")%>%
group_by(Continent,Metrics)%>%
filter(!is.na(Metrics))%>%
summarise(Count = length(Metrics))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Continent, y = reorder(Metrics,pct), fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)),
hjust = 0.5,vjust = 0.5, size = 4, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
scale_y_discrete(labels = function(x) str_wrap(x, width = 20))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Metrics used by organizations",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
En la mayoría de los casos, los estudiantes, estadísticos, investigadores científicos, investigadores principales, otros, desempleados, analistas de márquetin, gerentes, defensores de desarrolladores, analistas de datos, gerentes de jefe y analistas de negocios prefieren trabajar con datos numéricos. Por otro lado, la mayoría de los vendedores, DBA y científicos de datos optan por utilizar datos tabulares en su labor.
afroCountries %>%
select(Q6,Q32) %>%
group_by(Q6,Q32) %>%
filter(!is.na(Q32)) %>%
summarise(Count = length(Q32)) %>%
mutate(pct = round(prop.table(Count)*100,2)) %>%
ggplot(aes(x = reorder(Q32,-Count), y = Q6, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
legend.position = "none",
axis.text.y = element_text(size = 11),
axis.text.x = element_text(size = 12, angle = -90, hjust = 0, vjust = 0.5),
legend.text = element_text(size = 11)) +
labs(title = "Most used data types",
x = "Type of data", y = "", fill = "",
caption = "Data")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
Las plataformas de agregación de conjuntos de datos son las principales fuentes de datos utilizadas tanto por mujeres (247) como por hombres (197). La segunda fuente más utilizada por ambos sexos es la búsqueda en Google, seguida en tercer lugar por GitHub.
afroCountries %>%
select(Q1,266:276) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
gather(2:12, key = "questions", value = "DataSource")%>%
group_by(Q1,DataSource) %>%
filter(!is.na(DataSource)) %>%
summarise(Count = length(DataSource))%>%
ggplot(aes(x = reorder(DataSource,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 20)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Sources used to get public datasets",
x = "", y = "Count", fill = "",
caption = "Data")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
Un notable número de encuestados nunca ha utilizado servicios de computación en la nube. Entre los que nunca han utilizado estos servicios se encuentran la mayoría de los estudiantes, estadísticos, asistentes de investigación, gerentes de proyecto, otros, desempleados, analistas de márquetin, consultores y analistas de negocios. Por otro lado, aquellos que sí utilizan servicios de computación en la nube, prefieren Amazon Web Services (AWS) en el caso de los científicos de datos, Google Cloud Platform (GCP) entre los ingenieros de software, y Microsoft Azure para ingenieros y analistas de datos.
afroCountries %>%
select(Q6,Q15_Part_1:Q15_Part_7)%>%
gather(2:8, key = "questions", value = "Cloud_services")%>%
group_by(Q6,Cloud_services)%>%
filter(!is.na(Cloud_services))%>%
summarise(Count = length(Cloud_services))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(Cloud_services,-Count), y = Q6, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 9),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Cloud computing services at work/school",
x = "", y = "", fill = "",
caption = "")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
Una gran parte de las personas encuestadas no utiliza productos de computación en la nube, y este grupo incluye a estudiantes, asistentes de investigación, otros y analistas de datos. Por otro lado, aquellas personas que sí hacen uso de productos de computación en la nube, optan por Google Compute Engine, en particular los ingenieros de software.
afroCountries %>%
select(Q6,Q27_Part_1:Q27_Part_20) %>%
gather(2:21, key = "questions", value = "cloud")%>%
group_by(Q6,cloud)%>%
filter(!is.na(cloud))%>%
filter(!is.na(Q6))%>%
summarise(Count = length(cloud))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(cloud,-Count), y = Q6, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15))+
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.5, size = 2.5, color = "white") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 10),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Cloud computing products (past 5 years)",
x = "", y = "", fill = "",
caption = "Cloud computing products")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
En el continente de África, la mayoría de los usuarios muestran una clara preferencia por la herramienta de visualización conocida como Matplotlib, con aproximadamente 185 mujeres y 145 hombres haciendo uso de ella. Otras herramientas como Ggplot2 y Seaborn quedan rezagadas en términos de popularidad.
afroCountries %>%
select(Q1,Q22)%>%
filter(Q1 == "Female" | Q1 == "Male") %>%
group_by(Q1,Q22)%>%
filter(!is.na(Q22))%>%
summarise(Count = length(Q22))%>%
ggplot(aes(x = reorder(Q22,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.text = element_text(size = 11),
legend.position = "top") +
labs(title = "Most used vizualisation libraries",
x = "", y = "Count", fill = "",
caption = "Other tools")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
Sin embargo, la elección de una herramienta de visualización varía según la ocupación de la persona. Los usuarios de R, SQL, SAS/STATA y JavaScript tienden a preferir ggplot2, mientras que aquellos que trabajan con Python y Java optan por Matplotlib.
afroCountries %>%
select(Q17,Q22)%>%
group_by(Q17,Q22)%>%
filter(!is.na(Q17)) %>%
filter(!is.na(Q22))%>%
summarise(Count = length(Q22))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = reorder(Q22,-Count), y = Q17, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)),
hjust = 0.5,vjust = 0.25, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x,width = 10)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.y = element_text(size = 9),
axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0.5),
legend.text = element_text(size = 11),
legend.position = "none") +
labs(title = "Most used vizualisation library",
x = "", y = "Most used programming language", fill = "",
caption = "Vizualisation libraries")
## `summarise()` has grouped output by 'Q17'. You can override using the `.groups`
## argument.
En los últimos cinco años, MySQL, Microsoft SQL Server y PostgreSQL fueron los tres productos de bases de datos relacionales más utilizados, siendo elegidos principalmente por mujeres. Sorprendentemente, ninguno de los encuestados informó haber utilizado Ingres.
afroCountries %>%
select(Q1,196:223) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
gather(2:29, key = "questions", value = "RDB_Products") %>%
group_by(Q1,RDB_Products) %>%
filter(!is.na(RDB_Products))%>%
filter(!is.na(Q1))%>%
summarise(Count = length(RDB_Products))%>%
ggplot(aes(x = reorder(RDB_Products,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 15))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 8,
angle = -90, hjust = 0, vjust = 0.5),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Relational database products (past 5 years)",
x = "", y = "Count", fill = "",
caption = "Relational database")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
En el continente africano, una considerable cantidad de encuestados, aproximadamente 342 personas, no utilizan ninguna herramienta de análisis y big data. No obstante, aquellos que sí se dedican a estas tareas en África, optaron mayoritariamente por Google BigQuery.
afroCountries %>%
select(Q1,225:249) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
gather(2:26, key = "questions", value = "BigData_Products") %>%
group_by(Q1,BigData_Products) %>%
filter(!is.na(BigData_Products)) %>%
filter(!is.na(Q1)) %>%
summarise(Count = length(BigData_Products))%>%
ggplot(aes(x = reorder(BigData_Products,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 9, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Big data and analytics tools (past 5 years)",
x = "", y = "Count", fill = "",
caption = "Big data and analytics tools")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
En general, las herramientas de big data y análisis no gozan de mucha popularidad, tanto en el Continente de África como en otros continentes como Asia, Europa, Norteamérica, Oceanía y Sudamérica, donde la mayoría de los encuestados no las utilizan. Entre aquellos que sí las utilizan, Google BigQuery es la opción más preferida, mientras que solo una minoría opta por SAP IQ.
newMultipleChoice %>%
select(Continent,225:249) %>%
gather(2:26, key = "questions", value = "BigData_Products") %>%
group_by(Continent,BigData_Products) %>%
filter(!is.na(BigData_Products)) %>%
summarise(Count = length(BigData_Products))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Continent, y = reorder(BigData_Products,pct), fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)),
hjust = 0.5,vjust = 0.5, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Big data and analytics tools (past 5 years)",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
Los Afrikagglers recurren a diversas fuentes para mantenerse al tanto de las nuevas tendencias en el aprendizaje automático y la ciencia de datos. Aunque los hombres encuestados muestran un porcentaje ligeramente más alto en autoaprendizaje, cursos en línea y aprendizaje en el trabajo, la mediana es más alta para las mujeres africanas cuando se trata del aprendizaje en entornos universitarios.
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
## Warning in lapply(X = X, FUN = FUN, ...): NAs introducidos por coerción
p1 <- multipleChoice18 %>%
select(Q1,Q35_Part_1) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "",y = Q35_Part_1, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "Self-taught", x = "", y = "%")
p2 <- multipleChoice18 %>%
select(Q1,Q35_Part_2) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "", y = Q35_Part_2, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "Online courses", x = "", y = "%")
p3 <- multipleChoice18 %>%
select(Q1,Q35_Part_3) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "",y = Q35_Part_3, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "Work", x = "", y = "%")
p4 <- multipleChoice18 %>%
select(Q1,Q35_Part_4) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "", y = Q35_Part_4, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "University", x = "", y = "%")
p5 <- multipleChoice18 %>%
select(Q1,Q35_Part_5) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "",y = Q35_Part_5, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "Kaggle competitions", x = "", y = "%")
p6 <- multipleChoice18 %>%
select(Q1,Q35_Part_6) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
ggplot(aes(x = "", y = Q35_Part_6, fill = Q1)) +
geom_boxplot() +
scale_fill_brewer(palette = "Paired") +
theme(plot.title = element_text(size = 13, hjust = 0.5),
legend.text = element_text(size = 9),
legend.title = element_blank()) +
labs(title = "Other", x = "", y = "%")
grid.arrange(p1,p2, p3, p4, p5, p6, ncol = 3)
## Warning: Removed 7916 rows containing non-finite values (`stat_boxplot()`).
## Removed 7916 rows containing non-finite values (`stat_boxplot()`).
## Removed 7916 rows containing non-finite values (`stat_boxplot()`).
## Removed 7916 rows containing non-finite values (`stat_boxplot()`).
## Removed 7916 rows containing non-finite values (`stat_boxplot()`).
## Removed 7916 rows containing non-finite values (`stat_boxplot()`).
afroCountries %>%
select(Q3,Q36_Part_1:Q36_Part_13)%>%
gather(2:14, key = "questions", value = "OnlinePlatform")%>%
group_by(Q3,OnlinePlatform)%>%
filter(!is.na(OnlinePlatform))%>%
summarise(Count = length(OnlinePlatform))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = OnlinePlatform, y = pct, group = Q3)) +
geom_point(aes(color = Q3), size = 2) + geom_line(aes(color = Q3), size = 0.5) +
scale_fill_gradient(low = "salmon1", high = "blue") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
labs(title = "Platform for data science courses",
x = "", y = "%", fill = "",
caption = "")
## `summarise()` has grouped output by 'Q3'. You can override using the `.groups`
## argument.
Coursera se destaca como la plataforma predominante para la educación en línea, seguida por DataCamp y Udemy. Vale la pena destacar que Udemy, junto con Kaggle Learn y edX, parece ser más favorecida por los usuarios masculinos en términos de porcentaje en comparación con las usuarias femeninas.
afroCountries %>%
select(Q1,Q36_Part_1:Q36_Part_13)%>%
filter(Q1 == "Female"|Q1 == "Male")%>%
gather(2:14, key = "questions", value = "OnlinePlatform")%>%
group_by(Q1,OnlinePlatform)%>%
filter(!is.na(OnlinePlatform))%>%
summarise(Count = length(OnlinePlatform))%>%
ggplot(aes(x = reorder(OnlinePlatform,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 20))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Online platform used for learning",
x = "", y = "Count", fill = "",
caption = "Online learning")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
Un número considerable de encuestados recurre a Kaggle Forums como recurso principal para su aprendizaje, siendo interesante destacar que la mayoría de estos usuarios son mujeres. En segundo lugar, Twitter se posiciona como otra fuente relevante, seguido por el canal de Youtube de Siraj Raval.
afroCountries %>%
select(Q1,Q38_Part_1:Q38_Part_22)%>%
filter(Q1 == "Female"|Q1 == "Male")%>%
gather(2:14, key = "questions", value = "OnlinePlatform")%>%
group_by(Q1,OnlinePlatform)%>%
filter(!is.na(OnlinePlatform))%>%
summarise(Count = length(OnlinePlatform))%>%
ggplot(aes(x = reorder(OnlinePlatform,-Count), y = Count, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 20))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Online platform used for learning",
x = "", y = "Count", fill = "",
caption = "Online learning")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
Un importante contingente de encuestados, en particular estudiantes y científicos de datos, muestra una clara preferencia por el aprendizaje en línea en comparación con las instituciones educativas tradicionales. Asimismo, esta tendencia se refleja en la elección de BootCamps, que la mayoría prefiere sobre la educación tradicional, especialmente entre los profesionales.
afroCountries %>%
group_by(Q6,Q39_Part_1) %>%
filter(!is.na(Q39_Part_1)) %>%
summarise(Count = length(Q39_Part_1)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = reorder(Q39_Part_1,-Count), y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10)) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "Online learning vs. Traditional institution",
x = "", y = "",
caption = "")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
afroCountries %>%
group_by(Q6,Q39_Part_2) %>%
filter(!is.na(Q39_Part_2)) %>%
summarise(Count = length(Q39_Part_2)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = reorder(Q39_Part_2,-pct), y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10)) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = as.character(Count)), color = "white", size = 3.5) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 11),
axis.text.y = element_text(size = 9),
legend.text = element_text(size = 11)) +
labs(title = "In-person bootcamp vs. Traditional institution",
x = "", y = "",
caption = "")
## `summarise()` has grouped output by 'Q6'. You can override using the `.groups`
## argument.
La mayoría de los encuestados, en línea con la perspectiva africana, considera que los proyectos independientes tienen una importancia significativamente mayor que los logros académicos. Esta opinión se extiende a nivel continental en general.
afroCountries %>%
select(Q1,Q40) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
group_by(Q1,Q40) %>%
filter(!is.na(Q40)) %>%
filter(!is.na(Q1)) %>%
summarise(Count = length(Q40))%>%
mutate(pct = prop.table(Count)*100) %>%
ggplot(aes(x = reorder(Q40,-pct), y = pct, fill = Q1)) +
geom_col() +
scale_fill_brewer(palette = "Paired") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text = element_text(size = 12),
legend.position = "top",
legend.text = element_text(size = 11)) +
labs(title = "Independent projects vs. Academic achievements",
x = "", y = "Count", fill = "",
caption = "Expertise in data science")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
Aproximadamente 45.49% de los encuestados africanos consideran que los proyectos independientes son mucho más importantes que los logros académicos.
newMultipleChoice %>%
group_by(Continent, Q40)%>%
filter(!is.na(Q40))%>%
summarise(Count = length(Q40))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Continent, y = reorder(Q40,pct), fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)),
hjust = 0.5,vjust = 0.25, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
scale_y_discrete(labels = function(x) str_wrap(x, width = 30))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 11),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Expertise in data science",
subtitle = "Independent projects vs. academic achievements",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
afroCountries %>%
group_by(Q1,Q9)%>%
filter(Q1 == "Female"|Q1 == "Male")%>%
filter(!is.na(Q9))%>%
summarise(Count = length(Q9))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Q9, y = pct, group = Q1)) +
geom_point(aes(color = Q1), size = 2) + geom_line(aes(color = Q1), size = 1) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5)) +
theme(plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, vjust = 0.5, hjust = 0),
axis.text.y = element_text(size = 12),
legend.position = "top",
legend.title = element_blank(),
legend.text = element_text(size = 11)) +
scale_fill_brewer(palette = "Paired") +
labs(title = "Yearly compensation",
x = "$", y = "%", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1'. You can override using the `.groups`
## argument.
afroCountries %>%
group_by(Q1,Q9,Q3) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q9)) %>%
summarise(Count = length(Q9)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q3, y = Q9, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)), color = "white", size = 2) +
facet_grid(Q1~.) +
coord_flip() +
scale_y_discrete(labels = function(x) str_wrap(x, width = 35)) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11)) +
labs(title = "Yearly compensation",
x = "", y = "$", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1', 'Q9'. You can override using the
## `.groups` argument.
afroCountries %>%
group_by(Q1,Q9,Q4) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q4)) %>%
filter(!is.na(Q9)) %>%
summarise(Count = length(Q9)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q4, y = Q9, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)), color = "white", size = 2) +
facet_grid(Q1~.) +
coord_flip() +
scale_y_discrete(labels = function(x) str_wrap(x, width = 35)) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11)) +
labs(title = "Yearly compensation by degree",
x = "", y = "$", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1', 'Q9'. You can override using the
## `.groups` argument.
afroCountries %>%
group_by(Q1,Q9,Q6) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q6)) %>%
filter(!is.na(Q9)) %>%
summarise(Count = length(Q9)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q9, y = Q6, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)), color = "white", size = 2) +
facet_grid(Q1~.) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5)) +
scale_y_discrete(labels = function(x) str_wrap(x, width = 30)) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90,
hjust = 0, vjust = 0.5),
axis.text.y = element_text(size = 7),
legend.text = element_text(size = 11)) +
labs(title = "Yearly compensation vs. current role",
x = "$", y = "", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1', 'Q9'. You can override using the
## `.groups` argument.
afroCountries %>%
group_by(Q1,Q9,Q8) %>%
filter(Q1 == "Female" | Q1 == "Male") %>%
filter(!is.na(Q8)) %>%
filter(!is.na(Q9)) %>%
summarise(Count = length(Q9)) %>%
mutate(pct = round(prop.table(Count)*100,2))%>%
ggplot(aes(x = Q9, y = Q8, fill = pct)) +
geom_tile(size = 0.5, show.legend = TRUE) +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)), color = "white", size = 2) +
facet_grid(Q1~.) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5)) +
scale_y_discrete(labels = function(x) str_wrap(x, width = 10)) +
theme(legend.position = "none",
plot.title = element_text(size = 15, hjust = 0.5),
axis.text.x = element_text(size = 11, angle = -90, hjust = 0),
axis.text.y = element_text(size = 11),
legend.text = element_text(size = 11)) +
labs(title = "Yearly compensation by gender and experience in current role",
x = "$", y = "Years of experience", fill = "",
caption = "About us")
## `summarise()` has grouped output by 'Q1', 'Q9'. You can override using the
## `.groups` argument.
newMultipleChoice %>%
group_by(Continent, Q9)%>%
filter(!is.na(Q9))%>%
summarise(Count = length(Q9))%>%
mutate(pct = prop.table(Count)*100)%>%
ggplot(aes(x = Continent, y = Q9, fill = pct)) +
geom_tile(stat = "identity") +
scale_fill_gradient(low = "salmon1", high = "blue") +
geom_text(aes(label = sprintf("%.2f%%", pct)),
hjust = 0.5,vjust = 0.25, size = 3, color = "white") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 5))+
scale_y_discrete(labels = function(x) str_wrap(x, width = 30))+
theme(plot.title = element_text(size = 15, hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.text.x = element_text(size = 11),
axis.text.y = element_text(size = 11),
legend.position = "none",
legend.text = element_text(size = 11)) +
labs(title = "Yearly compensation",
x = "", y = "", fill = "",
caption = "Africa and the world")
## `summarise()` has grouped output by 'Continent'. You can override using the
## `.groups` argument.
En cuanto al nivel de ingresos de los participantes que compartieron esta información en la encuesta, se observa que la mayoría de ellos (45.49%) tienen ingresos anuales en el rango de $0-10,000, con un promedio situado en la franja de $10,000-20,000 en todos los países considerados. No obstante, es interesante destacar que dentro del continente africano, específicamente en Kenia y Sudáfrica, se encuentran los mayores ingresos, donde los encuestados masculinos declaran ganancias que superan los $300,000 anuales. Independientemente de su titulación, la mayoría de los encuestados en estos países ganan menos de $10,000 anuales. Sin embargo, se destaca que en profesiones relacionadas con la ciencia de datos, como científicos de datos, estadísticos o ingenieros de datos, se pueden obtener ingresos más elevados. En términos generales, el panorama en África muestra que la mayoría de los encuestados obtienen ingresos inferiores a $10,000 anuales, mientras que en regiones como América del Norte y Oceanía, existe una mayor proporción de personas que reportan ingresos superiores a $100,000 al año. En contraste, en Europa, la mayoría de los encuestados se encuentran en el rango de $0-60,000 anuales. Estos resultados reflejan la diversidad de situaciones económicas en diferentes regiones geográficas.
Los encuestados africanos provienen de países como Egipto, Kenia, Marruecos, Nigeria, Sudáfrica y Túnez. En esta región, se destaca una proporción relativamente alta de mujeres en comparación con hombres, lo que la distingue de otras partes del mundo. La mayoría de los participantes tienen edades comprendidas entre los 22 y 29 años, lo que indica una concentración significativa de jóvenes en esta encuesta. Es relevante notar que la proporción de estudiantes mujeres ha disminuido en comparación con el año anterior, lo que sugiere una fluctuación en la composición de los encuestados a lo largo del tiempo. Además, las mujeres encuestadas presentan un mayor nivel de educación en comparación con sus homólogos masculinos. Los hombres tienden a recibir salarios sustancialmente más altos que las mujeres, a pesar de contar con un nivel de experiencia similar. La encuesta señala que la ciencia de datos aún está en sus etapas iniciales en África, aunque presenta un potencial crecimiento prometedor, especialmente en países como Sudáfrica y Kenia, donde los empleos en esta área son altamente remunerados. En general, los encuestados tienen pocos años de experiencia en programación, pero están dispuestos a aprender. Los resultados también indican que Coursera es la plataforma de aprendizaje más popular en esta región, mientras que Python, R y SQL son los lenguajes de programación más utilizados. A pesar de los desafíos de analizar una muestra pequeña, se destaca que la ciencia de datos y el aprendizaje automático están en una etapa incipiente en África, con perspectivas de crecimiento alentadoras a medida que más personas se adentran en este campo de estudio. Se espera que el próximo año se obtenga una mayor cantidad de respuestas, lo que permitirá una evaluación más sólida. Los resultados obtenidos en esta encuesta en gran medida siguen tendencias globales, como el uso generalizado de Python, pero también revelan particularidades en la región, como la relación entre hombres y mujeres en el campo.