记得是13年得某一天晚上,忘记在哪里看到了国内某酒店开房数据被脱裤的消息,于是一顿搜索找到了数据的种子文件,当时下到的是sql server的备份文件,总共大概7.9G,下载下来搭好环境随便查了查就新鲜过去了。直到最近,我又翻到了这套数据,心想不如拿他开刀,用python做一次数据分析吧,于是便有了此文。这次我下载的数据是前人已经处理过,导出成CSV格式的数据,压缩包一共792M,解压后是11个2.93G的csv文件,内容看起来大概是这样:
对表头进行了简单分析后,决定统计如下内容,开房性别分布,年龄分布,星座分布,地域分布,邮箱使用分布,手机运营商使用分布,以及开房时间点分布。基于目标结果,我制定了如下的清洗方案:
第一遍清洗
我大致看了一下数据内容,发现在写程序清洗之前还得做点准备工作,发现了这三类坑吧:一是数据不是完整的一行;二是数据乱码;三是数据中无用空格。如下图所示:
我通过sublime的查找替换功能完成了第一遍清洗,解决了行数据不全问题,剔除了多余的空格,以及删除了乱码行。当然,我写了一个小程序帮助我定位乱码的位置。数据格式统一之后就可以用程序来清洗数据了,本次清洗主要删除了无用字段,去除了各个字段中首尾的空格。代码如下:
清洗后的数据如下:
第二遍清洗
第一遍清洗过后,数据格式变得规范,接下来就可以对数据内容进行清洗了,这里主要处理了名字和身份证号,对于超过四个字的名字直接剔除,身份证号不符合规范的剔除,15位的身份证号,转为18位(具体算法百度百科都有)。同时对于非身份证ID,储存在foreign.csv文件;对于不符合身份证规范的数据,存储在dirty.csv文件中。具体清洗代码如下:
第三遍清洗
到这里,数据基本上已经清洗完成了,最后处理的是电话,电话只要手机号,number1优先级高,如果不是手机号,直接置空。将数据按照身份证号前两位分组,按照省份剔除最后的脏数据。所有清洗工作就完成了,最后一次清洗的代码如下:
最终的清洗结果剔除了大量对本次统计无意义的字段,过滤了大概400W的脏数据,最终有效数据1600W条。如下图所示:
小结
本次数据清洗没啥技术可言,专门做数据挖掘的应该可以写出比我更好的程序,我也是最近事情比较多,所以断断续续分三个程序来洗。其实我想谈的是从这份数据我看到的一些问题。
据我观察数据本身应该是锦江XX酒店的,13年脱裤后在当时还是比较火的。如果是黑产从业者,单这一份数据可带来的潜在收入应该至少在千万级别,数据销售主要流向一般是电信诈骗和广告定向投放,以及非法讨债和私家侦探。即便在今天,根据身份证得出年龄,再加上电话邮箱,也可以做广告定向投放,比如40-50岁的推荐保健品、健康保险业务,30-40岁的推荐子女教育、购房、购车等。那么在这个个人信息被疯狂买卖的时代,一条个人信息究竟值多少钱呢?以下是我在知乎上看到的某匿名用户的回答:
虽然不能确定上述内容的真实性,但也应该算是黑产的冰山一角了。其实关于个人信息被买卖的事情实在是想不出什么好办法可以彻底杜绝,毕竟这个时代叫信息时代,信息正在引导社会经济的发展。想要保护好公民的个人信息,除了完善相关法律,加大打击力度,企业也要提高网络安全意识,加强网络安全建设。我们自己也要提高警惕,尽量少在网上填写个人信息,可以瞎填的就瞎填,可以不填的就不填。还有就是希望从业者不要监守自盗,能摸着良心做事。好啦,就说这么多吧,下篇文章会给出本次数据分析的结果。
领取专属 10元无门槛券
私享最新 技术干货