“要多少是多啊?”“要什么自行车!”
文 | 英贤社
图 | 英贤社
对他人隐私窥探的好奇心是第一生产力。最近一部名为《私生活》的韩剧十分火热,剧中各方势力通过科技的运用获取大众的隐私从而实现各自的政治诉求。本剧的具体内容就不在此剧透了,有兴趣的可以自行移步观影。上周末刷完这部剧之后,忘了是什么契机聊起了美国不同行业的从业者到底能赚多少钱。于是好奇心大增,开启了一个窥探隐私的数据项目。
在美国工作的外国人都要办理工作签证,而劳工部会公开披露这些岗位的相关信息,包括公司名称,职位名称,薪水区间等一系列信息。除此之外,常驻美国的外国工作人员到一定时间雇主通常都会为雇员办理永久居留,就是俗称的绿卡。这一过程非常复杂繁琐,其中的一环是需要向劳工部提交雇员的详细信息,包括雇员的毕业学校,毕业年份,所学专业以及国籍等。虽然雇员的名字等隐私信息没有披露,但如果用心,其实基本上可以用所提供的信息准确地锁定到某个申请究竟是谁。这样,也就知道了这个人在提交绿卡申请时的收入是多少了。
整体的项目流程大致构想如下:首先从劳工部官网获取数据,然后进行基本的数据清理,然后将数据导入数据库,之后就可以用数据结构化查询语言——也就是SQL——来进行数据调取和分析了。
有了大致的思路,第一步就是着手获取数据。曾几何时劳工部会提供一个专门的网页提供以上信息的检索,但是搜索速度很慢并且搜索结果也不尽人意。而现在劳工部将外国工作人员相关的数据统一展示在数据官网上,但问题在于数据是以Excel表格的格式按照劳工部财年每年一份文件列示。而对于工作签证信息来说,每一个Excel表格都有近70万的数据量和100多个维度,这让直接在Excel表格中处理数据变得艰难——仅仅是打开表格就要好久。于是我决定用R来读取Excel数据然后在RStudio中进行数据处理和整合。
劳工部的文件历史可以追溯到2008年。我原本的思路是,直接用一个循环将所有的13个文件读取,然后直接一次性上传到数据库。但是我发现我想的简单了,政府数据的质量简直不堪入目。首先,每一年的文件维度不同。以PERM数据(绿卡)为例,08-09年采用相同格式,之后10-14年维度数量相同,然后15-19年文件维度数量相同,2020年的格式又有了变化。这就导致数据的处理需要分段完成,分别导入数据库。本来以为按照文件维度数量不同,读取4次应该可以完成整合,谁知代码不停报错。仔细一看发现虽然在同组年份中数据的维度相同,但是维度的排序和名称居然杂乱无章。另外维度数据类别也存在差异,比如邮政编码有的是5位的数字格式,有的由于期间有“-”分隔符间隔,于是整列变成了文本格式。这又给数据的清理带来了不必要的麻烦。我用了周末一整个下午试图将同组年份的数据整合在一起。后来突然想到,其实数据整合这一步并不需要在数据读取这一步完成。更好的方式是将每一年的数据分别上传到数据库,然后在数据库中创建一个“view”将所有数据表连接在一起,这样效率更高并且大大降低了数据清理的难度。
做正确的事,比正确地做事要重要的多。
有了这个新思路,数据的处理变得快起来。这告诉我们做正确的事,比正确地做事要重要的多。所以,价值观永远优先于方法论。在从Excel导入R的过程中,日期的数据类型从“YYYY-MM-DD”格式变成了五位数的数字格式,于是在R中需要用正则表达将所有带有“date”的维度都强制转化为日期格式。从Excel转换为R的日期格式,起始点需要设置为“1899-12-30”;或者用更简单的方式,直接调用“convertToDate”就好。另外需要处理的是工资收入的格式问题。有的年份有工资收入区间的两个变量——最小值和最大值。但有的年份的工资收入一栏是用间隔符隔断的两个数字“from-to”,这样本来是数字格式的变量就变成了文本格式。所以继续在R中用以“-”分隔符为模式将收入一栏分开为两列,这样就将文本格式对齐。
进行了以上一系列的数据处理之后,最后一步就是将这些数据从R上传到数据库中,之后数据库就搭建完毕。每一个年份在“visa schema”中都有一个表格与之对应。之后为了可以在数据库中查询全部数据,我分别为PERM与H-1B创建了两个“view”,选出最有价值的变量,用“union”将全部数据整合在一起。之后,所有的数据读取和分析都可以直接查询最终的“view”而不需要记得每一个年份数据的维度描述与名称了。
数据库我用的是PostgreSQL,原因很简单——免费并且轻便。但是我没有用pgAdmin,而是选择了Oracle的SQL Developer。SQL Developer依然是免费的,并且可以对接PostgreSQL。SQL Developer很多的快捷键都已经很熟悉了,所以用起来更加方便。搞定了数据库之后,就可以开始窥探隐私了。
首先我们来看一下不同年份毕业的群体,在他们办理PERM的时候的平均工资都是多少。我选取了波士顿,山景城和纽约来进行对比。从结果可以大致看出通胀的趋势,毕业年份越是临近现在,平均工资越高。而山景城的码农们赚的比纽约的金融白领们多,而纽约的金融白领们比波士顿的金融民工们赚的多。真的是人比人气死人。
另外,通过对H-1B与PERM的数据对比可以看出,PERM的平均工资比H-1B要高。这其实符合直觉,H-1B很多都是入门级的职位,收入比较低,因此拉低了平均值,而PERM都是工作了一段时间的雇员,他们在职场混的年头更久,平均来说收入更高。
而对于公司来说,在高盛做一个VP收入有40万美元,而在麦肯锡做一个见习合伙人的收入只有23万美元左右。真的是男怕入错行,女怕嫁错郎。另外对于基金公司的基金经理们,比如Fidelity,Blackrock和Vanguard,大致上的工资收入都在22万左右。这些工资收入都只是基本工资,绩效奖金和股份期权收入并不算在内。
另外再看各个职业构成的时候,发现纽约居然有一个Butcher,你说这不扯呢么。知道你会好奇,告诉你,这个屠夫的年收入为三万八千块美元。
纽约有一个Butcher?这不扯呢么!
妻看到这个数据库后很感兴趣,提议和我赌谁猜工资猜的准。于是我们随机调取了麦肯锡咨询公司的9个职位,我们各自给出对于岗位收入的猜测。“m”和“f”这两列分别是我与妻给出的猜测,而“wage”这一栏是真实的薪资。妻和我都大大低估了设计师的收入,在此对设计师的不敬表示歉意。
最后一块的分析是看你的收入在整体人群中所处的位置,在此用的是H-1B数据,年份是2020年,城市选为纽约。数据表明,在2020年找到第一份工作或是换了工作的外国人一共有25781人,如果你的收入是15万美元,那么你的收入战胜了69%的对手。而如果同样的收入在波士顿,你就能战胜82%的对手。纽约的收入水平还是比波士顿要高的多啊。
独乐乐不如众乐乐。
这个星期所有的业余时间都给了这个小小的项目。后续还会继续跟踪劳工部发布的数据来完善数据库,如果大家感兴趣,下一步我会做一个R Shiny将数据库发布到网上供大家自由检索,毕竟独乐乐不如众乐乐。你还想了解哪些收入相关的数据呢?请在文章末尾留言哦,欢迎大家互扒隐私。
——END——
英贤社:世界如此荒凉,只能培养一颗寂寞的心。