對網上盛傳的兩千萬洩漏資料的簡單分析

深藍發表於2013-10-26

最近網上盛傳兩千萬酒店使用者資料洩漏,出於好奇,我也從網上下載了一份下來。本次下載純粹是出於學習和研究用,不會做什麼壞事,不要問本人要下載地址,大家自己找。由於本人並不是學統計和資料探勘方面的,所以只能淺顯的做做統計分析,下面開始我們的學習和研究。

首先,資料來源只有一個表(總資料2005W),裡面主要存放了使用者的姓名、證件型別,證件號碼,生日,性別,住址,手機號碼,郵箱等私人資訊。這些資料應該是從多個資料來源整合進來的,因為裡面的格式很不工整,有些預設值使用的也不一樣。我們要做資料分析,那麼需要進行資料清理,然後建立Cube,使用ETL轉換成維度模型,最後使用各種前段呈現工具進行展示。

資料清理

主要是去除字串首尾的空格,還有就是很多資料是沒有生日和性別的值的,但是我們知道,通過身份證號碼就能夠推斷出生日和性別,所以這部分資料可以補齊。另外還有就是資料重複問題,我們可以把身份證號碼作為主鍵進行去重,我搜尋了下,有相同身份證號碼的大概佔總資料的0.5%,所以我也就沒有做去重工作,認為裡面的資料都表示一個獨立的人。

多維分析模型

有姓名,我們可以對姓氏分佈進行分析,有了身份證號碼,我們可以對出生地(省、市、區)進行分析,對出生的年月分佈進行分析,對性別分佈進行分析。住址由於格式太不一樣,就不分析了,有了手機號碼我們可以對手機號碼段的分佈進行分析,也可以對使用者所在地進行分析(絕大多數使用者使用的手機號就是平時生活所在地的號),有了郵箱地址可以對域名進行統計。

要得到身份證對於的地區,以及電話號碼對應的地區,可以從網上找到對應表,匯入資料庫中即可進行聯合分析。

image

出生年月和性別

在建立了多維模型後,使用Excel連線Cube進行多維分析是個很簡單的事情。下面我們看看所有人員的年齡分佈。

image

我們可以看到,住酒店的人主要集中在1962~1990年左右,由於我們的資料是Budget Hotel(比較廉價的酒店)資料,可以想象,住這些酒店的都是社會的中低層,高富帥和官二代是肯定不住這種酒店的,窮的很的那就只有住更廉價的招待所或者睡火車站了。住酒店的人的年齡段大部分都還在工作,看來很多人住酒店還是因為商務的原因。從16歲到20歲左右的酒店人數還是少數哈,並不是傳說的都是約炮資料。

下面再來對比一下各年齡段性別上的分佈。(為了便於觀看主體資料,我把時間段縮短成1949~2000)

image

從圖中可以看到,在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個月裡面,哪個月出生的人最多。

image

從圖中可以看出,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郵箱了。

以上只是簡單的分析,其實在進行了很好的資料清洗和模型設計後,我們還可以從中挖掘出很多好玩的地方。尤其是應用上資料探勘演算法,可以造成多個維度之間的相關性,由於工作較忙,時間比較倉促,所以實驗就做到這裡。大家有什麼想分析的話可以留言,我再做做。

相關文章