今天先整理一个毕业之前做的小项目,项目是用R语言做的,最终用Rmarkdown生成结果报告,我会把RMD文件、最终生成的html文件以及原始数据放在资源中大家可以自行下载以供复现(资源名称:kaggle社区问卷调查分析.zip)。成为粉丝之后即可下载哦o(* ̄▽ ̄*)ブ
1.数据介绍
本数据集来自kaggle社区的2018年机器学习和数据科学问卷调查,这是其第二次以问卷调查的形式来对数据科学和机器学习的现状进行真正全面的了解。该调查从10月份开始,为期一周,清洗之后共计23859个样本。
本次调查包含的方面较多,主要涉及受访者的年龄、薪资、用到的语言、数据科学家自信程度等。基于这个数据,kaggle官方推出了奖金为$28000的比赛,鼓励大家进行多角度探索,讲述来自世界各地的关于数据科学家的故事。
2.分析目标
本次分析对以下3个问题:
* 不同国家数据科学发展史
* 数据科学家自信度与其经验的关系
* 不同身份的人会使用什么语言去处理不同类型的数据
进行可视化探索分析,最终以聚类的形式来探索受访者的特点,以此来发现有趣的事情、讲述关于数据科学家的“故事”。
3.可视化探索分析
3.1不同国家数据科学发展史
先加载包:
library(tidyverse)
library(data.table)
导入数据
multi <- tibble(fread(str_c('D:/**********','multipleChoiceResponses.csv'), skip = 1, encoding = 'UTF-8')) #文件地址填写文件所在自己电脑的地址
将字符型数据转化成因子型
multi <- multi %>% mutate_if(is_character, as_factor)
数据预处理并可视化展示
vars <- c(country = "In which country do you currently reside?",
age = "What is your age (# years)?")
flvl <- c("18-24", "25-34", "35-44", "45-54", "55+")
multi_rename <- multi %>%
rename(!!vars) %>%
mutate(age = case_when(
age == "18-21" ~ "18-24",
age == "22-24" ~ "18-24",
age == "25-29" ~ "25-34",
age == "30-34" ~ "25-34",
age == "35-39" ~ "35-44",
age == "40-44" ~ "35-44",
age == "45-49" ~ "45-54",
age == "50-54" ~ "45-54",
age == "55-59" ~ "55+",
age == "60-69" ~ "55+",
age == "70-79" ~ "55+",
age == "80+" ~ "55+",
TRUE ~ as.character(age)
)) %>%
mutate(age = fct_relevel(age, flvl))
levels(multi_rename$country)[which(levels(multi_rename$country) == 'United States of America')] <- 'America'
foo <- multi_rename %>%
filter(!(country %in% c("Other", "I do not wish to disclose my location"))) %>%
group_by(country) %>%
count() %>%
ungroup() %>%
top_n(5, n)
multi_rename %>%
semi_join(foo, by = "country") %>%
ggplot(aes(age, fill = country)) +
geom_bar(position = "fill") +
scale_fill_discrete(labels = paste(as.character(foo$country), as.character(foo$n), sep = "\n")) +
theme_classic() +
theme(legend.position = "bottom") +
labs(x = "Age Group", y = "Percentage") +
ggtitle("Age in top 5 countries") +
theme(plot.title = element_text(hjust = 0.5))
从图中可以发现一些有趣现象:
* 本次受访者中,随年龄增长美国人的占比升高。原因是美国的人工智能发展较早,即使是在那个时候的“年轻人”,现在也已中年
* 与之相反,印度人随年龄增长比例降低。众所周知,印度的软件外包产业很发达,且印度政府大力支持软件教育,在大约3000所中学推出了“中学计算机扫盲和学习计划”
* 随年龄增长,中国人的比例下降,在34岁处下降尤为明显。在大数据浪潮面前,年轻人比其他群体更愿意且容易接受新事物,因此出现了图中的”断层“现象
3.2 数据科学家自信度与其经验的关系
vars <- c(exp_code = "How long have you been writing code to analyze data?",
exp_ml = "For how many years have you used machi