对网上盛传的两千万泄漏数据的简单分析
最近网上盛传两千万酒店用户数据泄漏,出于好奇,我也从网上下载了一份下来。本次下载纯粹是出于学习和研究用,不会做什么坏事,不要问本人要下载地址,大家自己找。由于本人并不是学统计和数据挖掘方面的,所以只能浅显的做做统计分析,下面开始我们的学习和研究。
首先,数据源只有一个表(总数据2005W),里面主要存放了用户的姓名、证件类型,证件号码,生日,性别,住址,手机号码,邮箱等私人信息。这些数据应该是从多个数据源集成进来的,因为里面的格式很不工整,有些默认值使用的也不一样。我们要做数据分析,那么需要进行数据清理,然后建立Cube,使用ETL转换成维度模型,最后使用各种前段呈现工具进行展示。
数据清理
主要是去除字符串首尾的空格,还有就是很多数据是没有生日和性别的值的,但是我们知道,通过身份证号码就能够推断出生日和性别,所以这部分数据可以补齐。另外还有就是数据重复问题,我们可以把身份证号码作为主键进行去重,我搜索了下,有相同身份证号码的大概占总数据的0.5%,所以我也就没有做去重工作,认为里面的数据都表示一个独立的人。
多维分析模型
有姓名,我们可以对姓氏分布进行分析,有了身份证号码,我们可以对出生地(省、市、区)进行分析,对出生的年月分布进行分析,对性别分布进行分析。住址由于格式太不一样,就不分析了,有了手机号码我们可以对手机号码段的分布进行分析,也可以对用户所在地进行分析(绝大多数用户使用的手机号就是平时生活所在地的号),有了邮箱地址可以对域名进行统计。
要得到身份证对于的地区,以及电话号码对应的地区,可以从网上找到对应表,导入数据库中即可进行联合分析。
出生年月和性别
在建立了多维模型后,使用Excel连接Cube进行多维分析是个很简单的事情。下面我们看看所有人员的年龄分布。
我们可以看到,住酒店的人主要集中在1962~1990年左右,由于我们的数据是Budget Hotel(比较廉价的酒店)数据,可以想象,住这些酒店的都是社会的中低层,高富帅和官二代是肯定不住这种酒店的,穷的很的那就只有住更廉价的招待所或者睡火车站了。住酒店的人的年龄段大部分都还在工作,看来很多人住酒店还是因为商务的原因。从16岁到20岁左右的酒店人数还是少数哈,并不是传说的都是约炮数据。
下面再来对比一下各年龄段性别上的分布。(为了便于观看主体数据,我把时间段缩短成1949~2000)
从图中可以看到,在1990年之前出生人里面,住酒店的男性比例远高于女性,毕竟出差的人还是以男性居多吧,这个数据可以理解。但是在90后的年龄段里面,女性比例和男性比例基本是1:1,甚至还有些数据是女性比例高于男性,90后才刚跨入社会开始工作,或者还没有开始工作,所以不存在大量男性出差的问题,但是为什么女性比例会比男性比例高呢?这个问题有意思,留给大家自己YY。
省份分布
我们可以从身份证号码前2位知道一个人在出生上户口的时候所在的省份,可以统计每个省份的住酒店人数。本身统计这个没什么意思,把全国人口统计数据拿出来比较就比较有意思了。下面看看做出的表。
省份 | 酒店排行 | 人口排行 | 上升名次 |
江苏 | 1 | 5 | 4 |
山东 | 2 | 2 | 0 |
浙江 | 3 | 10 | 7 |
河南 | 4 | 3 | -1 |
安徽 | 5 | 8 | 3 |
湖北 | 6 | 9 | 3 |
上海 | 7 | 24 | 17 |
河北 | 8 | 6 | -2 |
辽宁 | 9 | 14 | 5 |
山西 | 10 | 18 | 8 |
四川 | 11 | 4 | -7 |
江西 | 12 | 13 | 1 |
黑龙 | 13 | 15 | 2 |
陕西 | 14 | 16 | 2 |
福建 | 15 | 17 | 2 |
湖南 | 16 | 7 | -9 |
广东 | 17 | 1 | -16 |
北京 | 18 | 26 | 8 |
吉林 | 19 | 21 | 2 |
内蒙 | 20 | 23 | 3 |
天津 | 21 | 27 | 6 |
甘肃 | 22 | 22 | 0 |
广西 | 23 | 11 | -12 |
贵州 | 24 | 19 | -5 |
新疆 | 25 | 25 | 0 |
云南 | 26 | 12 | -14 |
青海 | 27 | 30 | 3 |
宁夏 | 28 | 29 | 1 |
重庆 | 29 | 20 | -9 |
海南 | 30 | 28 | -2 |
西藏 | 31 | 31 | 0 |
我们可以看到,上海、浙江、山西、北京、天津这几个地方的住酒店人数排名远高于人口排名,江浙一带和京津塘一带经济很发达,出差频繁,可以理解,但是山西为什么出差那么多呢?可能山西人有商业的基因吧。
另外就是发现广东、广西、云南、四川、重庆的住酒店人数小于人口排名,广东很发达啊,怎么会住酒店的人少呢?可能是因为广东人喜欢在本地发展吧,出来到处漂的并不多。
上面只是从身份证上得出的省份,下面再看看手机号得出的省份数据,这个数据反映的应该是人们当前工作/生活的省份的情况。
省份 | 酒店排行 | 人口排行 | 上升名次 |
江苏 | 1 | 5 | 4 |
上海 | 2 | 24 | 22 |
北京 | 3 | 26 | 23 |
山东 | 4 | 2 | -2 |
广东 | 5 | 1 | -4 |
浙江 | 6 | 10 | 4 |
河南 | 7 | 3 | -4 |
湖北 | 8 | 9 | 1 |
辽宁 | 9 | 14 | 5 |
陕西 | 10 | 16 | 6 |
河北 | 11 | 6 | -5 |
福建 | 12 | 17 | 5 |
山西 | 13 | 18 | 5 |
安徽 | 14 | 8 | -6 |
黑龙 | 15 | 15 | 0 |
天津 | 16 | 27 | 11 |
四川 | 17 | 4 | -13 |
江西 | 18 | 13 | -5 |
湖南 | 19 | 7 | -12 |
吉林 | 20 | 21 | 1 |
内蒙 | 21 | 23 | 2 |
重庆 | 22 | 20 | -2 |
广西 | 23 | 11 | -12 |
甘肃 | 24 | 22 | -2 |
贵州 | 25 | 19 | -6 |
新疆 | 26 | 25 | -1 |
云南 | 27 | 12 | -15 |
海南 | 28 | 28 | 0 |
宁夏 | 29 | 29 | 0 |
青海 | 30 | 30 | 0 |
西藏 | 31 | 31 | 0 |
这个数据比上一个数据的差别更大,可以说是非常不平衡,可以看到,上海、北京、天津的商业很发达,人口排名不高,但是住酒店的人口排名非常高。比较杯具的是云南、四川、湖南、广西,工作和出差人数远少于人口基数。
姓名分布
这里我只统计了姓,没有统计名,不过姓名可以先说一下,在所有姓名数据中,重名最高的前10个姓名是:张伟,王伟,王磊,李伟,张磊,刘伟,李强,张勇,王勇,刘洋。相信很多人周围就有这些姓名的人。重名排行前250位左右的都是两个字的姓名,看来起三个字姓名的重名率会低很多很多。重名率最高的Top10三个字姓名的是:王建军,王志强,王建华,王晓东,张建军,王婷婷,王志刚,张建华,张志强,张婷婷。好像周围也很容易找到这些姓名的人。
下面还是说姓吧,这个对中国人来说很重要。姓氏很多,网上找了一个前200姓氏人口排名表,拿来和我做出来的数据对比,发现有以下几个数字比较突出:
- 金姓和陆姓的酒店统计排名远远高于人口统计排名。
- 邓,曾,孔这三个姓的酒店统计排名远远小于人口统计排名。
其中原因还得从其他维度去联合分析,可能是因为有些姓是集中在某个地方吧!
另外一个题外话,在Top200的姓氏人口统计中没有肖姓,却有萧姓,其实这是同一个姓,古时候根本没有姓肖的,后来由于文革时期的简体字运动,把萧简写成了肖,后来这个简写又被取消了。
出生月份统计
很简单的一个统计分析,看看一年12个月里面,哪个月出生的人最多。
从图中可以看出,10月份的人最多,4月份的人最少。为什么会这样呢?可能需要专家来解释。
手机号段分布
我这里取的是手机号码的前三位,应该哪个最高?我一直以为是138,结果发现是139。
139 | 1399857 |
138 | 1230530 |
135 | 782764 |
136 | 778188 |
137 | 683742 |
186 | 581451 |
159 | 456526 |
158 | 434760 |
133 | 356135 |
150 | 324798 |
移动的号码占很大优势,联通186和电信的133都排在后面了。看来广大中低产阶级还是选移动的多啊。
本来还可以进一步分析具体是全球通、神州行还是动感地带的,难得提取了。有需要的话可以再花点时间分析分析。
邮箱域名分布
邮箱域名里面,哪个最多?以前听说是163,后来又听说QQ邮箱把他超越了,我们还是看数据吧。
前10大邮箱域名排名:
@qq.com | 611842 |
@163.com | 594392 |
@126.com | 274512 |
@hotmail.com | 203237 |
@sina.com | 151798 |
@yahoo.com.cn | 101692 |
@gmail.com | 96346 |
@139.com | 67565 |
@sohu.com | 50179 |
@yahoo.cn | 31274 |
QQ邮箱果然是最多的,不过优势也不是那么明显,而且排第二第三的都是网易的邮箱,加起来就超过QQ邮箱了。
以上只是简单的分析,其实在进行了很好的数据清洗和模型设计后,我们还可以从中挖掘出很多好玩的地方。尤其是应用上数据挖掘算法,可以造成多个维度之间的相关性,由于工作较忙,时间比较仓促,所以实验就做到这里。大家有什么想分析的话可以留言,我再做做。