罗兰谈MATLAB的艺术

将想法转化为MATLAB

调查揭示了“学习编程”运动的多样性

你有没有使用任何免费的“学习编程”网站来自学编程?你可能已经知道如何在MATLAB中编程,但你很可能正在学习其他技能MOOCs

今天的客座博主Toshi分析了一项公开的调查数据,以了解自学成才的程序员的人口结构。

内容

加载数据

我在科技博客上看到一篇文章,自由代码营的调查揭示了自学成才的程序员的人口结构我很好奇,因为很多人似乎对学习如何编码感兴趣,行业和政府也在鼓励这种趋势。但是编程很难。究竟是什么样的人会冒险一试?我们自己的免费互动在线编程课程MATLAB学院或gamifiedMATLAB科迪也越来越受欢迎,我想知道是什么激发了这种兴趣。

该调查匿名进行,于2016年3月28日至5月2日期间在网络上发布,并通过社交媒体进行推广,针对的是对编程相对陌生的人。

以下分析显示了自学编码员在性别和种族混合方面的显著多样性,以及mooc在通过传统STEM教育路径为服务不足的人群开放机会方面的可能影响。

我首先下载了2016年新编码器调查结果来自Github.然后我将CSV文件解压缩到当前文件夹中。有两个文件——第1部分和第2部分——我们将把它们读入单独的表中。我们可以用innerjoin,但在这种情况下,我主要只对第2部分感兴趣,考虑到回复数量的差异,我们将丢弃第1部分中的至少1000个回复。

警告(“关闭”“MATLAB:表:ModifiedVarnames”%抑制警告csv =“2016新编码员调查第1部分”%文件名Part1 = readtable(csv);%读入表part1.Properties。VariableNames =...%格式变量名regexprep (part1.Properties.VariableNames“_ + $”);%通过删除额外的“_”csv =“2016新编码器Part 2.csv”%文件名Part2 = readtable(csv);%读入表part2.Properties。VariableNames =...%格式变量名regexprep (part2.Properties.VariableNames“_ + $”);%通过删除额外的“_”警告(“上”“MATLAB:表:ModifiedVarnames”%启用警告part1。SubmitDate_UTC = datetime(part1.SubmitDate_UTC);将日期字符串转换为日期时间第二部分。SubmitDate_UTC = datetime(part2.SubmitDate_UTC);将日期字符串转换为日期时间S = sprintf('从%s到%s\n的part1 %d响应'...第一部分的%摘要高度(part1) datestr (min (part1.SubmitDate_UTC)),...%的响应计数,开始日期datestr (max (part1.SubmitDate_UTC)));%和结束日期流('从%s到u %s的%spart2 %d响应'...第2部分的%摘要年代,身高(第二部分),datestr (min (part2.SubmitDate_UTC)),...%的响应计数,开始日期datestr (max (part2.SubmitDate_UTC)));%和结束日期
part2 14625 response from 29- march -2016 21:25:36 thru 02-May-2016 18:35:59

女性比例高于预期

让我们从绘制年龄分布的直方图开始。罗兰指出我们可以用omitnan国旗在中位数来处理缺失的值,而不是nanmedian

柱状图显示,很多参与调查的人都属于所谓的“千禧一代”。考虑到STEM领域经常被提及的性别差距,很有趣的是,有多少女性参与了这项调查。目前尚不清楚这是否反映了真实的人口状况,还是女性在自我选择中比例过高?还是自学编程比传统教学更吸引女性?

年龄= part2.HowOldAreYou;%从第二部分得到年龄性别= categorical(part2.What_sYourGender);%从第二部分得到性别为绝对第二部分。What_sYourGender =性别;%更新表数字%新数字X =年龄(年龄~= 0 &性别==“男”);%按性别划分的子集年龄直方图(x)%柱状图文本(50550年,sprintf (年龄中位数(男性):%d...%注释中位数(x,“omitnan”)) text(50,470, sprintf(模式年龄(男性):%d模式(x)))%注释持有%不要覆盖X =年龄(年龄~= 0 &性别==“女”);%按性别划分的子集年龄直方图(x)%柱状图文本(50520年,sprintf (年龄中位数(女性):%d...%注释中位数(x,“omitnan”)) text(50,440, sprintf(模式年龄(女性):%d模式(x)))%注释持有%恢复默认值标题(“按性别划分的年龄分布”%添加标题包含(“年龄”%添加x轴标签ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例

主要在有国籍的国家学习

由于这项调查是在网上进行的,任何人都可以参与。让我们来看看地理分布。正如你所料,大部分的回复来自美国。你还可以看到,在美国,女性的回复占男性回复的40.59%,这证实了女性在回复中的比例很高。

值得注意的是,中国没有进入前10名。也许“学习编程”的热潮还没有在那里流行起来?

第二部分。WhichCountryDoYouCurrentlyLiveIn =...%转换为分类分类(part2.WhichCountryDoYouCurrentlyLiveIn);country = part2. where countrydoyoucurrentlylivein;获取居住国家Catcount = countcats(国家);获取类别计数的百分比猫=类别(国家);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名国家= mergecats(国家,下面的top10,“其他”);把它们合并成其他的国家= reordercats(国家,[猫(排名(1:10));{“其他”}]);%重新排序猫的排名比率= sum(国家==“美利坚合众国”...美国男女比例的%性别= =“女”) /笔(国家= =“美利坚合众国”&性别==“男”);数字%新数字直方图(国家(性别= =“男”))%柱状图持有%不要覆盖直方图(国家(性别= =“女”))%柱状图持有%恢复默认值Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签标题(“按性别划分的居住国家”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例Text (1.5, 1900, sprintf(“美国女性/男性%.2f%%”比率* 100))%注释

您还可以通过将国籍国映射到居住国来可视化迁移模式。边的数量只有467,这意味着在第二部分的14625个回答中,只有467个来自移民,大多数人在他们的国籍国家生活和学习。如果你计算移民与移民的比例,美国、英国、加拿大、澳大利亚、德国和俄罗斯从中都获得了净收益人才流失

第二部分。WhichCountryAreYouACitizenOf =...%转换为分类分类(part2.WhichCountryAreYouACitizenOf);你是哪个国家的公民;获得国家国籍TBL = table(cellstr(国籍),cellstr(国家));创建居住和公民身份表Tbl (isundefined(国籍)& isundefined(国家),:)= [];%删除空行台。(1)(strcmp(台。(1),' <定义> ')) =...%如果公民身份是空的使用居住台。(2)(strcmp(台。(1),' <定义> '));台。(2)(strcmp(台。(2),' <定义> ')) =...%如果住所是空的使用公民身份台。(1)(strcmp(台。(2),' <定义> '));[tbl, ~, idx] = unique(tbl,“行”);%消除重复行W = accumarray(idx, 1);%重复使用计数作为重量G =有向图(tbl.(1), tbl.(2), w);%创建一个有向图indeg = indegree(G);获得学位比值=深度/倾斜度(G);进度与出度之比数字%新数字colormap很酷的% set colormapw = G.Edges.Weight;%获取权重h = plot(G,“MarkerSize”日志(indeg + 2),“NodeCData”比,...% plot方向图“EdgeColor”,(。7.7.7],“EdgeAlpha”, 0.3,“线宽”10 * w / max (w));caxis ([0 3])%设置颜色轴缩放轴([-2.8 3.3 -4.5 3.7])%设置轴限制标题({“迁移模式”...%添加标题“在14,625份回复中有467例(3.2%)”}) labelnode (h,猫(等级(1:10)),猫(等级(1:10)))%标记前10个节点Nlabels = {“阿根廷”“阿塞拜疆”“智利”“刚果”...%要标记的额外节点“科特迪瓦“象牙”克罗地亚的“希腊人”圭亚那的拉脱维亚的莱索托的...“马耳他”“其他”“巴拉圭”“菲律宾”“塞尔维亚共和国”“罗马尼亚”};labelnode (h, nlabels, nlabels);%标记附加节点H = colorbar;%添加色条ylabel (h,“入学位与出学位之比”添加度量

美国不同种族的英语使用者

让我们关注美国。如前所述,大多数接受调查的自学成才的新程序员都是美国公民,但其种族构成非常多样化。一半以上的女性是少数民族,三分之一的男性也是少数民族。考虑到移民比例较低,他们主要讲英语。然而,我们应该注意到,调查本身是用英语进行的,并通过社交媒体用英语进行宣传。

你是你国家的少数民族吗?获得少数人地位数字%新数字次要情节(1、2、1)%创建子图X =性别(国家==“美利坚合众国”...%子集& isminority == 0);% us非少数直方图(x)%柱状图持有%不要覆盖X =性别(国家==“美利坚合众国”...子集性别%& isminority == 1);%美国少数族裔直方图(x)%柱状图持有%恢复默认值标题(“按种族分类的美国性别”%添加标题ylabel (“数”%添加y轴标签传奇(“大多数”“少数民族”“位置”“西北”%添加图例第二部分。WhichLanguageDoYouYouSpeakAtHomeWithYourFamily =...%转换为分类分类(part2.WhichLanguageDoYouYouSpeakAtHomeWithYourFamily);你在家里说什么语言?%获取语言美国=语言(国家==“美利坚合众国”);%提取us数据猫计数=计数猫(美国);获取类别计数的百分比猫=类别(美国);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名美国= mergecats(美国,below_top10,“其他”);把它们合并成其他的USA = reordercats(USA,[猫(rank(1:10));{“其他”}]);%重新排序猫的排名Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签次要情节(1、2、2)%创建子图直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“男”))%按性别划分美国语言子集持有%不要覆盖直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“女”))%按性别划分美国语言子集持有%恢复默认值标题(“美国性别语言”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例

许多人受过高等教育,并已在美国就业

我们已经知道,很多参加慕课的人已经获得了大学学位并有了工作。这次调查也显示了同样的结果。

第二部分。What_sTheHighestDegreeOrLevelOfSchoolYouHaveCompleted =...%转换为分类分类(part2.What_sTheHighestDegreeOrLevelOfSchoolYouHaveCompleted);level = part2.What_sTheHighestDegreeOrLevelOfSchoolYouHaveCompleted;获得度美国=学位(国家==“美利坚合众国”);%提取us数据猫计数=计数猫(美国);获取类别计数的百分比猫=类别(美国);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别USA = reordercats(USA,cats(rank));%重新排序猫的排名数字%新数字次要情节(1、2、1)%创建子图直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“男”))%子集美国学位按性别持有%不要覆盖直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“女”))%子集美国学位按性别持有%恢复默认值标题(“按性别划分的美国学位”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例第二部分。RegardingEmploymentStatus_AreYouCurrently =...%转换为分类分类(part2.RegardingEmploymentStatus_AreYouCurrently);employmentstatus_areyoucurrent;就业百分比other = part2.Other;%在就业上胜过别人Isstudent = 0 (size(other));%设置累加器有趣= @ (x, y) ~ cellfun (@isempty, strfind(低(x), y));%匿名函数句柄isstudent(有趣,“学生”)) = 1;如果找到'studnet', %标记isstudent(有趣,“学习”)) = 1;如果发现'study ', % flagisstudent(有趣,“学校”)) = 1;如果找到'school', %标记isstudent(有趣,“大学”)) = 1;如果找到'university', %标记isstudent(有趣,“度”)) = 1;如果找到'degree', % flagisstudent(有趣,“博士”)) = 1;% flag,如果找到'phd'就业(逻辑(isstudent)) =“学生”更新就业百分比美国=就业(国家==“美利坚合众国”);%提取us数据猫计数=计数猫(美国);获取类别计数的百分比猫=类别(美国);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别USA = reordercats(USA,cats(rank));%重新排序猫的排名次要情节(1、2、2)%创建子图直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“男”))%按性别划分美国就业人数子集持有%不要覆盖直方图(美国(性别(国家= =...%柱状图“美利坚合众国”) = =“女”))%按性别划分美国就业人数子集持有%恢复默认值标题(“按性别划分的美国就业”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例

许多人已经在美国从事软件开发和IT工作

事实证明,许多受访者已经在软件开发和It领域工作,并且来自非常多样化的学术背景,包括STEM和非STEM学科。由于非stem专业的女性比例往往更高,这可能解释了为什么我们在这项调查中看到的女性比例高于预期。似乎在本科学习非stem专业的女性受访者现在正在从事软件开发工作。

奇怪的是,我们也看到许多计算机科学专业的学生大多是男性。为什么已经有计算机科学背景的人还在追求自学编程?难道他们不应该在学校里学吗?

第二部分。WhichFieldDoYouWorkIn =...%转换为分类分类(part2.WhichFieldDoYouWorkIn);job = part2. wherefielddoyouworkin;%找到工作作业= mergecats(作业,{“软件开发及资讯科技”...%合并相似类别“软件开发”});Us_job = job(国家==“美利坚合众国”);%提取us数据猫计数=计数猫(us_job);获取类别计数的百分比猫=类别(us_job);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名Us_job = mergecats(Us_job, below_top10,“其他”);把它们合并成其他的Us_job = reordercats(Us_job,[cats(rank(1:10)));{“其他”}]);%重新排序猫的排名数字%新数字次要情节(1、2、1)%创建子图直方图(us_job(性别(国家= =...%柱状图“美利坚合众国”) = =“男”))%的子集我们的主题按性别持有%不要覆盖直方图(us_job(性别(国家= =...%柱状图“美利坚合众国”) = =“女”))%的子集我们的主题按性别持有%恢复默认值标题(“按性别划分的美国职场”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”%添加图例第二部分。WhatWasTheMainSubjectYouStudiedInUniversity =...%转换为分类分类(part2.WhatWasTheMainSubjectYouStudiedInUniversity);你的主修科目是什么?%获得学术专业us_majj = major(国家==“美利坚合众国”);%提取us数据Catcount = countcats(us_maj);获取类别计数的百分比猫=类别(us_maj);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名Us_maj = mergecats(Us_maj, below_top10,“其他”);把它们合并成其他的Us_maj = reordercats(Us_maj,[猫(排名(1:10));{“其他”}]);%重新排序猫的排名次要情节(1、2、2)%创建子图直方图(us_maj(性别(国家= =...%柱状图“美利坚合众国”) = =“男”))%的子集我们的主题按性别持有%不要覆盖直方图(us_maj(性别(国家= =...%柱状图“美利坚合众国”) = =“女”))%的子集我们的主题按性别持有%恢复默认值标题(“美国学术专业的性别”%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”“位置”“西北”%添加图例

下面是一个快速的心智检查。是的,计算机科学专业的学生似乎确实在软件开发和IT领域工作,这从两者之间的线宽可以看出。

TBL = table(cellstr(us_majj),cellstr(us_job));%创建us专业和us工作表Tbl (isundefined(us_maj) | isundefined(us_job) |...删除未定义us_maj = =“其他”:) = [];从我们的主要删除'其他'[tbl, ~, idx] = unique(tbl,“行”);%消除重复行W = accumarray(idx, 1);%重复使用计数作为重量G =有向图(tbl.(1), tbl.(2), w);%创建一个有向图数字%新数字w = G.Edges.Weight;%获取权重h = plot(G,“布局”“分层”“线宽”5 * w / max (w));绘制有向图xlim (-2.5 [16])% x轴限制突出(h,独特的(台(2)),“NodeColor”,(。85.3.3..1])%突出显示作业节点标题({“美国专业vs.工作领域”...%添加标题“线宽随频率变化”}) text(- 2,2,“专业”“FontWeight”“大胆”%注释文本(2,1,“田野工作”“FontWeight”“大胆”%注释注释(“箭头”,(。2.2],[.75 .25],“颜色”,[0 .45 .75])%注释

软件开发和IT专业背景

深入研究软件开发和IT,我们发现并不是每个计算机科学专业的人都有不同的学术背景,他们可能基于他们的背景处于不同的职业轨道。女性在英语、心理学和其他专业中所占比例较高。

Us_maj_it = major(国家==“美利坚合众国”...%的子集主要国家& job ==“软件开发及资讯科技”);%和工作猫计数=计数猫(us_maj_it);获取类别计数的百分比猫=类别(us_maj_it);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名Us_maj_it = mergecats(Us_maj_it,下面的top10,“其他”);把它们合并成其他的Us_maj_it = reordercats(Us_maj_it,[猫(排名(1:10));{“其他”}]);%重新排序猫的排名数字%新数字直方图(us_maj_it(性别(国家= =...%柱状图“美利坚合众国”...%按工作划分我们的主题工作= =“软件开发及资讯科技”) = =“男”))%及性别持有%不要覆盖直方图(us_maj_it(性别(国家= =...%柱状图“美利坚合众国”...%按工作划分我们的主题工作= =“软件开发及资讯科技”) = =“女”))%及性别持有%恢复默认值Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签标题(美国软件开发和IT -按性别划分的专业%添加标题ylabel (“数”%添加y轴标签传奇(“男”“女”“位置”“西北”%添加图例

软件开发和IT行业收入差距大

让我们用a比较工作领域的收入范围箱线图.盒子的底部和顶部代表第一和第三个分位数,中间的红线代表中位数,胡须代表+/- 2.7个标准差。红色的“+”表示异常值。

与其他工作领域相比,软件开发和IT行业的收入差距较大(从细长的盒子形状和更长的胡须可以看出),这意味着有更好的上升潜力。

how much moneydidyoumakelastyear_inusdollars;%获得收入收入= str2double(收入);%转换为数字收入(income == 0) = NaN;%不算零Us_income = income(国家==“美利坚合众国”);%提取us数据数字%新数字箱线图(us_income us_job)%创建一个箱形图ylim ([0 2 * 10 ^ 5])%设置上限标题(“美国按职业领域划分的收入分配”%添加标题Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTickLabel = {“0”“$ 50 k”“100美元”“150美元”“200美元”};%设置y刻度标签ylabel (的年收入%添加y轴标签

什么会影响软件开发和IT行业的收入?

影响软件开发和IT行业收入的第一个因素是学术背景。这个箱形图显示,计算机科学和电气工程专业在获得高薪方面最有优势。这可能是自学编程趋势背后的动机——人们希望从目前的道路转向更赚钱的职业道路,或者在同一行业中更快地晋升。

us_income = income(国家==“美利坚合众国”...按国家划分的收入子集& job ==“软件开发及资讯科技”);%和工作数字%新数字箱线图(us_income_it us_maj_it)%创建一个箱形图ylim ([0 2 * 10 ^ 5])%设置上限标题({“美国各专业收入分布”....%添加标题“软件开发及资讯科技”}) ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTickLabel = {“0”“$ 50 k”“100美元”“150美元”“200美元”};%设置y刻度标签ylabel (的年收入%添加y轴标签

年龄因素

另一个需要考虑的重要因素是年龄。如果你将软件开发和IT专业的年龄与收入进行对比,你会发现计算机科学专业的年轻人之间存在很大的收入差距。一些25岁的年轻人可能年收入0美元,而不是11万美元。随着年龄的增长,收入似乎也趋于稳定。你可以使用适合exp2选项应用两项指数曲线到数据中,这样你可以很容易地看到它。也许这为计算机科学专业的学生提供了尽快提高技能和经验的动力?

Us_age_it =年龄(国家==“美利坚合众国”...%的子集年龄按国家& job ==“软件开发及资讯科技”);%和工作X = us_age_it(us_maj_it ==“计算机科学”);%子集只是CSY = us_income_it(us_maj_it ==“计算机科学”);%子集只是CS数字%新数字情节(X, Y,“o”百分比图数据持有%不要覆盖isnan(X) | isnan(Y);%查找nanX(missingrows) = [];%移除nanY(missingrows) = [];%移除nanfitresult = fit(X,Y,“exp2”);%适合exp2情节(fitresult)%曲线持有%恢复默认值标题({“计算机科学专业各年龄段收入情况”...%添加标题“软件开发及资讯科技”}) xlim([10 60])%设置x轴限制ylim ([0 2 * 10 ^ 5])%设置y轴限制Ax = gca;%获取当前轴句柄斧子。YTick = 0:5万:200000;% set y tick斧子。YTickLabel = {“0”“$ 50 k”“100美元”“150美元”“200美元”};%设置y刻度标签包含(“年龄”%添加x轴标签ylabel (的年收入%添加y轴标签

不青睐大公司

如果你看看这些人正在寻找的未来就业机会,他们最不喜欢大公司。由于人们没有获得正式学位,他们可能希望在其他就业选择上有更大的灵活性。

最受欢迎的选择是中型公司,但许多人对为初创公司工作感兴趣,或者自己创业,或者做自由职业者。从事软件开发和IT工作的人更倾向于为初创公司或中型公司工作。男性倾向于自己创业或为初创公司工作,而女性则倾向于自由职业。

第二部分。want_employment_type =...%转换为分类分类(part2.want_employment_type);interestd_emp = part2.want_employment_type;感兴趣的工作类型数字%新数字次要情节(1、2、1)%创建子图Us_int_emp_it = interestd_emp(国家==...按国家和工作划分子集“美利坚合众国”& job ==“软件开发及资讯科技”);Us_int_emp_it (isundefined(Us_int_emp_it)) = [];删除未定义Us_int_emp_it = removecats(Us_int_emp_it);%删除未使用的类别直方图(us_int_emp_it“归一化”“概率”%柱状图持有%不要覆盖Us_int_emp_non_it = interestd_emp(国家==...按国家和工作划分子集“美利坚合众国”& job ~=“软件开发及资讯科技”);Us_int_emp_non_it (isundefined(Us_int_emp_non_it)) = [];删除未定义Us_int_emp_non_it = removecats(Us_int_emp_non_it);%删除未使用的类别直方图(us_int_emp_non_it“归一化”“概率”%柱状图持有%恢复默认值标题({“美国理想就业类型”《Job Field》})%添加标题Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTick = 0:0.1:0.6;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”“40%”“50%”“60%”};%设置y刻度标签传奇(“软件发展及资讯科技”“别人”%添加图例ylim (0.6 [0])%设置y轴限制次要情节(1、2、2)%创建子图Us_int_emp_m = interestd_emp(国家==...%按国家划分子集“美利坚合众国”&性别==“男”);%的性别Us_int_emp_m (isundefined(Us_int_emp_m)) = [];删除未定义Us_int_emp_m = removecats(Us_int_emp_m);%删除未使用的类别直方图(us_int_emp_m“归一化”“概率”%柱状图持有%不要覆盖Us_int_emp_f = interestd_emp(国家==...%按国家划分子集“美利坚合众国”&性别==“女”);%的性别Us_int_emp_f (isundefined(Us_int_emp_f)) = [];删除未定义Us_int_emp_f = removecats(Us_int_emp_f);%删除未使用的类别直方图(us_int_emp_f“归一化”“概率”%柱状图持有%恢复默认值标题({“美国理想就业类型”“性别”})%添加标题Ax = gca;%获取当前轴句柄斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTick = 0:0.1:0.6;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”“40%”“50%”“60%”};%设置y刻度标签传奇(“男”“女”%添加图例ylim (0.6 [0])%设置y轴限制

梦想的工作

当谈到人们感兴趣的实际工作时,他们大多是web开发职位。已经从事软件开发和IT工作的人倾向于选择具有更高技术技能的角色后端Web开发DevOps,或系统管理员而不是前端Web开发,或其他非开发角色,如产品经理或QA工程师。在性别方面,女性更倾向于前端Web开发和用户体验设计

Int_job = categorical(strtrim(part2. jobs_interestd_in));找到感兴趣的工作Catcount =计数猫(int_job);获取类别计数的百分比Cats = categories(int_job);%获取类别[~, rank] = sort(catcount,“下”);按计数排序类别Below_top10 = setdiff(猫,猫(rank(1:10)));%类别低于前10名Int_job = mergecats(Int_job, below_top10,“其他”);把它们合并成其他的Int_job = reordercats(Int_job,[cats(rank(1:10)));{“其他”}]);%重新排序猫的排名数字%新数字次要情节(1、2、1)%创建子图Us_int_job_non_it = int_job(国家==...%子集int工作按国家和工作“美利坚合众国”& job ~=“软件开发及资讯科技”);直方图(us_int_job_non_it“归一化”“概率”%柱状图持有%不要覆盖Us_int_job_it = int_job(国家==...%子集int工作按国家和工作“美利坚合众国”& job ==“软件开发及资讯科技”);直方图(us_int_job_it“归一化”“概率”%柱状图持有%恢复默认值标题({“对美国工作感兴趣”“工作现场”})%添加标题传奇(“其他”“软件开发和IT”%添加图例Ax = gca;%获取当前轴句柄斧子。YTick = 0:0.1:0.5;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”“40%”“50%”};%设置y刻度标签ylim (0.5 [0])%设置y轴限制次要情节(1、2、2)%创建子图Us_int_job_m = int_job(国家==...%子集int作业按国家“美利坚合众国”&性别==“男”);%及性别直方图(us_int_job_m“归一化”“概率”%柱状图持有%不要覆盖Us_int_job_f = int_job(国家==...%子集int作业按国家“美利坚合众国”&性别==“女”);%及性别直方图(us_int_job_f“归一化”“概率”%柱状图持有%恢复默认值标题({“对美国工作感兴趣”“性别”})%添加标题传奇(“男”“女”%添加图例Ax = gca;%获取当前轴句柄斧子。YTick = 0:0.1:0.5;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”“40%”“50%”};%设置y刻度标签ylim (0.5 [0])%设置y轴限制

学生贷款债务

调查还回答了受访者背负了多少学生贷款债务,以及他们花了多少钱学习编程。超过41%的受访者有学生贷款债务,欠款中位数为25,000美元。此外,人们在学习编程的过程中也会花钱,总花费的中位数是300美元。考虑到很多人都有债务,他们负担不起更多的支出和增加赤字,这也反映了他们在未来就业时更保守的选择。

关于thowmuchdoyouoweinstudentloans_inusdollars;%得到学生债务债务= str2double(债务);%转换为数字债务(债务== 0)= NaN;%不算零Us_debt =债务(国家=“美利坚合众国”);%提取us数据Pct_in_debt = sum(~isnan(us_debt))/length(us_debt)*100;负债百分比Median_debt = nanmedian(us_debt)/1000;债务中位数%数字%新数字次要情节(1、2、1)%创建子图直方图(us_debt)%柱状图xlim ([0 2 * 10 ^ 5])%设置y轴限制Ax = gca;%获取当前轴句柄斧子。XTick = 0:5万:200000;% set x tick斧子。XTickLabel = {“0”“$ 50 k”“100美元”“150美元”“200美元”};%设置x标记标签包含(“金额”%添加x轴标签ylabel (“数”%添加y轴标签标题({“美国学生贷款债务”...%添加标题sprintf (' %。2f%% in Debt (Median $%dk)'、pct_in_debt median_debt)})次要情节(1、2、2)%创建子图花= part2.total_spent_learning;%获得总花费花= str2double(花);%转换为数字花(花== 0)= NaN;%不算零Us_spend = spend(国家==“美利坚合众国”);%提取us数据直方图(us_spend)%柱状图xlim ([0 3 * 10 ^ 4])%设置y轴限制Ax = gca;%获取当前轴句柄斧子。XTick = 0:10000:30000;% set x tick斧子。XTickLabel = {“0”“10 k美元”“$ 20 k”“$ 30 k”};%设置x标记标签包含(“花总”%添加x轴标签ylabel (“数”%添加y轴标签标题({“美国人花时间学习”;sprintf (的中位数$ % d '...%添加标题nanmedian (us_spend))})

女性喜欢更热情的场所

这项调查似乎表明,与更传统的计算机科学教育相比,更多的女性参与了“学习编程”运动。当你观察女性喜欢的活动类型时,她们会对“女孩发展”和“编程女性”等性别特定的活动表现出强烈的偏好。当你看在线资源时,你看不出性别有多大差异。男性的出现似乎会让女性感到不受欢迎。

events_attend = part2.attended_event_types;活动出席率events_attend = cellfun(@(x) strsplit(x,','),...%由逗号分隔events_attended,“UniformOutput”、假);Events_attended_flatten = strtrim([events_attend {:}]);%取消嵌套和修剪[~,ia,ib] = unique(lower(events_attended_flatten));获取唯一索引事件= events_attended_flatten(ia);%获取唯一值Count = accumarray(ib,1);计数唯一值事件(count < 100) = [];减少不受欢迎事件的百分比事件(strcmpi(事件,“没有”)) = [];% drop 'none'events(cellfun(@isempty,events)) = [];%掉落空单元格出席=零(大小(events_出席,1),长度(事件));%设置累加器I = 1:size(events_attend,1)%循环已参加的事件出席(i,:) = ismember(events,strtrim(...找到交集events_attended{我}));%事件和参加的事件结束Attended_m = sum(参加的国家==...%国家参加的子集“美利坚合众国”&性别==“男”:));%及性别Attended_f = sum(参加的国家==...%国家参加的子集“美利坚合众国”&性别==“女”:));%及性别Gender_ratio = attended_m ./ sum(attended_m);%按事件获得男性比例性别比率=[性别比率;attended_f. /笔(attended_f)];%添加女性比例数字%新数字次要情节(1、2、1)%创建子图B = bar(性别比例',“FaceColor”,[0 .45 .75],...%创建条形图“FaceAlpha”6);%直方图颜色(2)。FaceColor =[。85 .33 .1];%直方图颜色Ax = gca;%获取当前轴句柄斧子。XTickLabel =事件;%设置x标记标签斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTick = 0:0.1:0.4;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”“40%”};%设置y刻度标签标题(“参加的美国热门活动”%添加标题传奇(“男”“女”%添加图例次要情节(1、2、2)%创建子图Resources_used = part2.learning_resources;获取已使用资源的百分比Resources_used = cellfun(@(x) strsplit(x,','),...%由逗号分隔resources_used,“UniformOutput”、假);Resources_used_flatten = strtrim([resources_used{:}]);%取消嵌套和修剪[~,ia,ib] = unique(lower(resources_used_flatten));获取唯一索引资源= resources_used_flatten(ia);%获取唯一值Count = accumarray(ib,1);计数唯一值Resources (count < 100) = [];%放弃不受欢迎的资源resources(cellfun(@isempty,resources)) = [];%掉落空单元格Usage = 0 (size(resources_used,1),length(resources));%设置累加器I = 1:size(resources_used,1)%循环使用的资源Usage (i,:) = ismember(resources,strtrim(...找到交集resources_used{我}));%资源和已使用资源结束Usage_m = sum(usage(国家==...按国家划分的子集使用百分比“美利坚合众国”&性别==“男”:));%及性别Usage_f = sum(usage(国家==...按国家划分的子集使用百分比“美利坚合众国”&性别==“女”:));%及性别Gender_ratio = usage_m ./ sum(usage_m);%通过资源获得男性比例性别比率=[性别比率;Usage_f ./ sum(Usage_f)];%添加女性比例B = bar(性别比例',“FaceColor”,[0 .45 .75],...%创建条形图“FaceAlpha”6);%直方图颜色(2)。FaceColor =[。85 .33 .1];%直方图颜色Ax = gca;%获取当前轴句柄斧子。XTickLabel =资源;%设置x标记标签斧子。XTickLabelRotation = 90;%旋转x打勾标签斧子。YTick = 0:0.1:0.3;% set y tick斧子。YTickLabel = {“0%”“10%”“20%”“30%”};%设置y刻度标签标题(“美国流行资源的使用”%添加标题传奇(“男”“女”%添加图例

举个例子,我鼓励我的女儿在高中参加机器人竞赛。她和她的朋友们聊天,因为她不想成为队里唯一的女孩,一群女孩加入了这个团队。当她从第一次团队会议回到家时,我问她在做什么。她说“我们在团队网页上工作”。原来男孩们负责建造机器人,女孩们被排除在外,所以他们负责建造团队网页。当工具包被送到团队时,男孩们只是挤在一起,没有把女孩包括在内。女孩并不是有意识地被排斥在外,但她们还是觉得不受欢迎。我怀疑女性参加的编程活动可能也有类似的动力。

我也想知道女性对前端Web开发和用户体验设计的偏好也是由同样的问题驱动的?

总结

也许这一分析最有趣的结果是,“学习编程”运动有效地缩小了软件开发和IT领域的性别差距,并受到了传统教育途径不足的少数族裔社区的欢迎。这也凸显了这些学习者由于背负高额学生贷款债务而面临的不稳定地位。从这次调查中,我们最终不知道他们中有多少人真的找到了自己梦想的工作,希望能有后续调查来发现“学习编码”运动是否真的兑现了承诺。

你使用过那些“学习编程”的网站或其他慕课吗?你在学习什么?是什么激励你去上这些课程?请分享你的经验在这里




发布与MATLAB®R2016a

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。