Data Source and Description

Kaggle conducted an industry-wide survey to establish a comprehensive view of the state of data science and machine learning. The survey received over 16,000 responses and we learned a ton about who is working with data, what’s happening at the cutting edge of machine learning across industries, and how new data scientists can best break into the field.

You can dowload data here.

Most Used Tools

R codes for this graph:

rm(list = ls())
library(tidyverse)

df_survey <- read.csv("E:\\R_project\\Kaggle\\ds_survey\\multipleChoiceResponses.csv", stringsAsFactors = FALSE)

tool_used <- c("IBMSPSSModeler", "IBMSPSSStatistics", "C", "MATLAB", "Statistica", 
               "Java", "Julia", "Excel", "MicrosoftSQL", "TensorFlow", "Spark", 
               "NoSQL", "Oracle", "Perl", "Python", "R", "DataRobot", "NoSQL", 
               "RapidMinerCommercial", "RapidMinerFree", "SASBase", "Mathematica", 
               "SASEnterprise", "SASJMP", "SQL", "Tableau")

df_survey %>% 
  select(paste0("WorkToolsFrequency", tool_used)) %>% 
  gather(tool, response) %>% 
  group_by(tool, response) %>% 
  count() %>% 
  ungroup() %>% 
  filter(response != "") %>% 
  mutate(tool = str_sub(tool, 19, str_count(tool))) %>% 
  group_by(tool, response) %>% 
  summarise(n = sum(n)) %>% 
  mutate(response = factor(response, levels = c("Rarely", "Sometimes", "Often", "Most of the time"))) -> df1


library(extrafont)
my_colors <- c("#8C3F4D", "#3E606F")
my_font <- "Roboto Condensed"


df1 %>% 
  ggplot(aes(response, n)) + 
  geom_col(fill = my_colors[2]) +
  geom_col(data = df1 %>% filter(tool == "Python"), aes(response, n), fill = my_colors[1]) + 
  geom_col(data = df1 %>% filter(tool == "R"), aes(response, n), fill = my_colors[1]) + 
  geom_col(data = df1 %>% filter(tool == "SQL"), aes(response, n), fill = my_colors[1]) + 
  facet_wrap(~ tool, strip.position = "top") + 
  coord_flip() + 
  geom_text(data = df1 %>% filter(tool != "Python"), aes(response, n, label = n), hjust = -0.1, family = my_font) + 
  geom_text(data = df1 %>% filter(tool == "Python", response == "Most of the time"), aes(response, n, label = n), hjust = 1.2, color = "white") + 
  geom_text(data = df1 %>% filter(tool == "Python", response != "Most of the time"), aes(response, n, label = n), hjust = -0.1) + 
  theme(plot.background = element_rect(fill = "#f5f5f2", color = NA)) +
  theme(panel.background = element_rect(fill = "#f5f5f2", color = NA)) +
  theme(strip.text.x = element_text(colour = "gray30", face = "bold", size = 12, family = my_font)) + 
  theme(panel.grid = element_blank()) + 
  theme(axis.text.x = element_blank()) + 
  theme(axis.text.y = element_text(family = my_font, size = 12)) + 
  theme(axis.ticks = element_blank()) + 
  theme(plot.title = element_text(family = my_font, size = 22)) + 
  theme(plot.caption = element_text(family = my_font, size = 10, face = "italic")) + 
  theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm")) + 
  scale_y_continuous(expand = c(0, 0)) + 
  labs(x = NULL, y = NULL, 
       title = "Figure 1: Most Used Tools for Data Science", 
       caption = "Data Source: Kaggle Data Science Survey")
LS0tDQp0aXRsZTogIkthZ2dsZSBEYXRhIFNjaWVuY2UgU3VydmV5IChUb29scyBmb3IgRGF0YSBTY2llbmNlKSINCmF1dGhvcjogIk5ndXllbiBDaGkgRHVuZyINCnN1YnRpdGxlOiAiRGFpbHkgR3JhcGggU2VyaWVzIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgICMgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgdGhlbWU6IGZsYXRseQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBmaWcucmV0aW5hPTIpDQpgYGANCg0KIyBEYXRhIFNvdXJjZSBhbmQgRGVzY3JpcHRpb24NCg0KS2FnZ2xlIGNvbmR1Y3RlZCBhbiBpbmR1c3RyeS13aWRlIHN1cnZleSB0byBlc3RhYmxpc2ggYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIHN0YXRlIG9mIGRhdGEgc2NpZW5jZSBhbmQgbWFjaGluZSBsZWFybmluZy4gVGhlIHN1cnZleSByZWNlaXZlZCBvdmVyIDE2LDAwMCByZXNwb25zZXMgYW5kIHdlIGxlYXJuZWQgYSB0b24gYWJvdXQgd2hvIGlzIHdvcmtpbmcgd2l0aCBkYXRhLCB3aGF04oCZcyBoYXBwZW5pbmcgYXQgdGhlIGN1dHRpbmcgZWRnZSBvZiBtYWNoaW5lIGxlYXJuaW5nIGFjcm9zcyBpbmR1c3RyaWVzLCBhbmQgaG93IG5ldyBkYXRhIHNjaWVudGlzdHMgY2FuIGJlc3QgYnJlYWsgaW50byB0aGUgZmllbGQuDQoNCllvdSBjYW4gZG93bG9hZCBkYXRhIFtoZXJlXShodHRwczovL3d3dy5rYWdnbGUuY29tL2thZ2dsZS9rYWdnbGUtc3VydmV5LTIwMTcvZGF0YSkuIA0KDQojIE1vc3QgVXNlZCBUb29scw0KDQohW10oQzpcVXNlcnNcWmJvb2tcRGVza3RvcFxwaWNccDguanBnKQ0KDQpSIGNvZGVzIGZvciB0aGlzIGdyYXBoOiANCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCg0Kcm0obGlzdCA9IGxzKCkpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KZGZfc3VydmV5IDwtIHJlYWQuY3N2KCJFOlxcUl9wcm9qZWN0XFxLYWdnbGVcXGRzX3N1cnZleVxcbXVsdGlwbGVDaG9pY2VSZXNwb25zZXMuY3N2Iiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQ0KDQp0b29sX3VzZWQgPC0gYygiSUJNU1BTU01vZGVsZXIiLCAiSUJNU1BTU1N0YXRpc3RpY3MiLCAiQyIsICJNQVRMQUIiLCAiU3RhdGlzdGljYSIsIA0KICAgICAgICAgICAgICAgIkphdmEiLCAiSnVsaWEiLCAiRXhjZWwiLCAiTWljcm9zb2Z0U1FMIiwgIlRlbnNvckZsb3ciLCAiU3BhcmsiLCANCiAgICAgICAgICAgICAgICJOb1NRTCIsICJPcmFjbGUiLCAiUGVybCIsICJQeXRob24iLCAiUiIsICJEYXRhUm9ib3QiLCAiTm9TUUwiLCANCiAgICAgICAgICAgICAgICJSYXBpZE1pbmVyQ29tbWVyY2lhbCIsICJSYXBpZE1pbmVyRnJlZSIsICJTQVNCYXNlIiwgIk1hdGhlbWF0aWNhIiwgDQogICAgICAgICAgICAgICAiU0FTRW50ZXJwcmlzZSIsICJTQVNKTVAiLCAiU1FMIiwgIlRhYmxlYXUiKQ0KDQpkZl9zdXJ2ZXkgJT4lIA0KICBzZWxlY3QocGFzdGUwKCJXb3JrVG9vbHNGcmVxdWVuY3kiLCB0b29sX3VzZWQpKSAlPiUgDQogIGdhdGhlcih0b29sLCByZXNwb25zZSkgJT4lIA0KICBncm91cF9ieSh0b29sLCByZXNwb25zZSkgJT4lIA0KICBjb3VudCgpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgZmlsdGVyKHJlc3BvbnNlICE9ICIiKSAlPiUgDQogIG11dGF0ZSh0b29sID0gc3RyX3N1Yih0b29sLCAxOSwgc3RyX2NvdW50KHRvb2wpKSkgJT4lIA0KICBncm91cF9ieSh0b29sLCByZXNwb25zZSkgJT4lIA0KICBzdW1tYXJpc2UobiA9IHN1bShuKSkgJT4lIA0KICBtdXRhdGUocmVzcG9uc2UgPSBmYWN0b3IocmVzcG9uc2UsIGxldmVscyA9IGMoIlJhcmVseSIsICJTb21ldGltZXMiLCAiT2Z0ZW4iLCAiTW9zdCBvZiB0aGUgdGltZSIpKSkgLT4gZGYxDQoNCg0KbGlicmFyeShleHRyYWZvbnQpDQpteV9jb2xvcnMgPC0gYygiIzhDM0Y0RCIsICIjM0U2MDZGIikNCm15X2ZvbnQgPC0gIlJvYm90byBDb25kZW5zZWQiDQoNCg0KZGYxICU+JSANCiAgZ2dwbG90KGFlcyhyZXNwb25zZSwgbikpICsgDQogIGdlb21fY29sKGZpbGwgPSBteV9jb2xvcnNbMl0pICsNCiAgZ2VvbV9jb2woZGF0YSA9IGRmMSAlPiUgZmlsdGVyKHRvb2wgPT0gIlB5dGhvbiIpLCBhZXMocmVzcG9uc2UsIG4pLCBmaWxsID0gbXlfY29sb3JzWzFdKSArIA0KICBnZW9tX2NvbChkYXRhID0gZGYxICU+JSBmaWx0ZXIodG9vbCA9PSAiUiIpLCBhZXMocmVzcG9uc2UsIG4pLCBmaWxsID0gbXlfY29sb3JzWzFdKSArIA0KICBnZW9tX2NvbChkYXRhID0gZGYxICU+JSBmaWx0ZXIodG9vbCA9PSAiU1FMIiksIGFlcyhyZXNwb25zZSwgbiksIGZpbGwgPSBteV9jb2xvcnNbMV0pICsgDQogIGZhY2V0X3dyYXAofiB0b29sLCBzdHJpcC5wb3NpdGlvbiA9ICJ0b3AiKSArIA0KICBjb29yZF9mbGlwKCkgKyANCiAgZ2VvbV90ZXh0KGRhdGEgPSBkZjEgJT4lIGZpbHRlcih0b29sICE9ICJQeXRob24iKSwgYWVzKHJlc3BvbnNlLCBuLCBsYWJlbCA9IG4pLCBoanVzdCA9IC0wLjEsIGZhbWlseSA9IG15X2ZvbnQpICsgDQogIGdlb21fdGV4dChkYXRhID0gZGYxICU+JSBmaWx0ZXIodG9vbCA9PSAiUHl0aG9uIiwgcmVzcG9uc2UgPT0gIk1vc3Qgb2YgdGhlIHRpbWUiKSwgYWVzKHJlc3BvbnNlLCBuLCBsYWJlbCA9IG4pLCBoanVzdCA9IDEuMiwgY29sb3IgPSAid2hpdGUiKSArIA0KICBnZW9tX3RleHQoZGF0YSA9IGRmMSAlPiUgZmlsdGVyKHRvb2wgPT0gIlB5dGhvbiIsIHJlc3BvbnNlICE9ICJNb3N0IG9mIHRoZSB0aW1lIiksIGFlcyhyZXNwb25zZSwgbiwgbGFiZWwgPSBuKSwgaGp1c3QgPSAtMC4xKSArIA0KICB0aGVtZShwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZjVmNWYyIiwgY29sb3IgPSBOQSkpICsNCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmNWY1ZjIiLCBjb2xvciA9IE5BKSkgKw0KICB0aGVtZShzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoY29sb3VyID0gImdyYXkzMCIsIGZhY2UgPSAiYm9sZCIsIHNpemUgPSAxMiwgZmFtaWx5ID0gbXlfZm9udCkpICsgDQogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTIpKSArIA0KICB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAyMikpICsgDQogIHRoZW1lKHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTAsIGZhY2UgPSAiaXRhbGljIikpICsgDQogIHRoZW1lKHBsb3QubWFyZ2luID0gdW5pdChjKDEuMiwgMS4yLCAxLjIsIDEuMiksICJjbSIpKSArIA0KICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkgKyANCiAgbGFicyh4ID0gTlVMTCwgeSA9IE5VTEwsIA0KICAgICAgIHRpdGxlID0gIkZpZ3VyZSAxOiBNb3N0IFVzZWQgVG9vbHMgZm9yIERhdGEgU2NpZW5jZSIsIA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBTb3VyY2U6IEthZ2dsZSBEYXRhIFNjaWVuY2UgU3VydmV5IikNCg0KICANCg0KDQpgYGANCg0KDQo=