UCI 人口收入數據分析(python)
一、項目介紹
UCI上有許多免費的數據集可以拿來練習,可以在下面的網站找尋
http://archive.ics.uci.edu/ml/datasets.html
這次我使用的是人口收入調查,裏面會有每個人的教育程度、每周工時、職業、性別等數據,並以50K為界線,分為收入大於50K和收入小於50K的人群。
首先利用pandas將數據抓下,由於數據是在網頁上,直接抓網頁就可以,並且用table的格式,以逗號區分列,由於原始數據沒有列名稱,所以需要為每列設定一個名稱,下面為代碼
import pandas as pd import sklearn file = pd.read_table(‘http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data‘, sep=‘,‘, names=[‘age‘, ‘workclass‘, ‘fnlwgt‘, ‘education‘, ‘education_num‘, ‘marital_states‘, ‘occupation‘, ‘relationship‘, ‘race‘, ‘sex‘, ‘capital_gain‘, ‘capital_loss‘, ‘hours_per_week‘, ‘native_country‘, ‘income‘])
file為表名,接著利用file.head()查看前五行的數據
接著用file.info()查看表的信息,發現數據挺完整的,沒有缺失數據,只是裏面數據大部分都是object,必須要做處理才有辦法計算(機器是無法對文字進行計算的,需要轉成數字或是矩陣)
接著用hist來看幾個int的分布
可以看到capital_gain和capital_loss的分布特別奇怪,絕大部分的數據都是0,其他的數據分布都還算是正常。
接著利用value_counts來查看各列的數據統計
像是雇主的話有三分之二的人都是在私企工作,第二多的是自由業,剩下的部分在國企,還有大約1800個是不名的
從這邊我們可以推斷,這個數據集裏雖然沒有數據缺失,但是有非常多的0和?這種數據,估計是沒問出結果就填了個東西,而這些填充數據會嚴重影響到時候的分析結果。
剩下的列就不一一展示了,可以看到有些列分布平均,像是職業,最多的也不超過20%,而且前面幾名的人數相差不大,這邊也可以發現每一列大約都有1800左右的填充數據。
接著我們需要去做相關性的分析,為什麽要做相關性分析呢?因為我們想要找出列跟列之間是否有某種關聯,還有每個列跟我們要預測的結果(income)是否有關聯。
由於關聯性是用數字去計算的,但是這個數據集裏面大部分的列都是文字,需要先轉成可以計算的數字。
這邊要註意的是,大部分的文字列數據並沒有連續性,所以不能直接轉成數字(數字是有連續性的),需要轉成矩陣,這邊可以用dummies這個功能將文字列轉為矩陣列
可以看到原本的workclass這一列,被拆分成了workclass_?, workclass_Federal-gov, workclass_Local-gov等,0代表不是,1代表是,也由於這樣的拆分,原本的15列現在變成了110列。
這個時候我們先看看有哪些列跟我們的結果有正相關吧,我們利用corr這個功能來對每一列跟結果列做相關分析
由結果可以看到,相關性最強的是已婚人士,再過來是家庭裏的丈夫,再過來是受教育的長度,年紀,工作時長,男性。而職業裏公司高管是相關性最強的,再過來是專業人員,這邊有點意外的是本科畢業的比碩士、博士畢業的相關性更強,種族是白人,下面是負相關最強的幾個
可以看到未婚人士是負相關最強的,正好跟前面的已婚做對比,再過來是小孩,女性等,可以看到這個數據集裏影響收入最主要的因素是家庭、性別、教育程度和職業。
到這邊我們可以了解收入較高的用戶畫像是受高等教育已婚的美國中年白人,而收入較低的是沒結過婚高中畢業的黑人女性
接著我們想了解收入最高的兩個職業都是由什麽樣的人
先是看高管,可以發現高管大部分都是本科畢業居多,然後工作時間長,有很大一部分是自己開公司,然後也是已婚白人男性。
再來是專業人士,可以發現專業人士跟受教育程度相關性非常大,並且大部分工作單位是政府單位,重點是在專業人士裏女性比男性的比例高,而且國籍正相關最強的不是美國而是印度和中國的亞洲女性。
可以分析出專業人士用戶畫像為已婚的高學歷亞洲女性,並為政府工作。
接著我們想看中國籍的美國人大概都是怎麽樣的人,可以發現非常學歷非常極端,不是博士畢業就是沒讀書,專業人士居多,然後竟然大部分是已婚配偶缺席這種特殊的婚姻狀態,其實我也搞不太懂為什麽。
以上就是一些簡單的用戶畫像分析,由於數據源是1994年的調查,距今已經20多年了,隨著時代變遷,現在的用戶畫像跟以前應該會有很大的不同,不過也可以借由這些數據來了解當時美國的一些生活情況。
UCI 人口收入數據分析(python)