數(shù)據(jù)分析案例--1880-2010年間全美嬰兒姓名的處理

本章節(jié)以及后續(xù)章節(jié)的源碼,當然也可以從我的github下載捷绑,在源碼中我自己加了一些中文注釋。

???美國社會保障總署(SSA)提供了一份從1880年到現(xiàn)在的嬰兒名字頻率數(shù)據(jù)氢妈。你可以用這個數(shù)據(jù)集做很多事粹污,例如:

????????計算指定名字(可以是你自己的,也可以是別人的)的年度比例允懂。

????????計算某個名字的相對排名厕怜。

????????計算各年度最流行的名字,以及增長或減少最快的名字蕾总。

????????分析名字趨勢:元音、輔音琅捏、長度生百、總體多樣性、拼寫變化柄延、首尾字母等蚀浆。

????????分析外源性趨勢:圣經(jīng)中的名字、名人搜吧、人口結構變化等市俊。

????????美國社會保障總署將該數(shù)據(jù)庫按年度制成了多個數(shù)據(jù)文件,其中給出了每個性別/名字組合的出生總數(shù)滤奈。這些文件的原始檔案可以在這里獲劝诿痢:http://www.ssa.gov/oact/babynames/limits.html

????????下載"National data"文件names.zip蜒程,解壓后的目錄中含有一組文件(如yob1880.txt)绅你。

一、對所有嬰兒姓名的預處理

????????1昭躺、文件是一個非常標準的以逗號隔開的格式忌锯,所以可以用pandas.read_csv將其加載到DataFrame中

????????這些文件中僅含有當年出現(xiàn)超過5次的名字。為了簡單起見领炫,我們可以用births列的sex分組小計表示該年度的births總計:

????????由于該數(shù)據(jù)集按年度被分隔成了多個文件偶垮,所以第一件事情就是要將所有數(shù)據(jù)都組裝到一個DataFrame里面,并加上一個year字段帝洪。使用pandas.concat即可達到這個目的:

????????pieces是許多個DataFrame的集合:

????????每一個DataFrame的數(shù)據(jù)如下:

????????這里需要注意幾件事情似舵。第一,concat默認是按行將多個DataFrame組合到一起的碟狞;第二啄枕,必須指定ignore_index=True,因為我們不希望保留read_csv所返回的原始行號∽逦郑現(xiàn)在我們得到了一個非常大的DataFrame频祝,它含有全部的名字數(shù)據(jù)泌参。有了這些數(shù)據(jù)之后,我們就可以利用groupby或pivot_table在year和sex級別上對其進行聚合了

????????2常空、以年為索引沽一,性別為列,出生數(shù)為值漓糙。統(tǒng)計每年的男女出生總數(shù)

?按性別和年度統(tǒng)計的總出生數(shù)

????????3铣缠、插入一個prop列,用于存放指定名字的嬰兒數(shù)相對于總出生數(shù)的比例昆禽。prop值為0.02表示每100名嬰兒中有2名取了當前這個名字蝗蛙。因此我們先按year和sex分組,然后再將新列加到各個分組上:

????????4醉鳖、在執(zhí)行這樣的分組處理時捡硅,一般都應該做一些有效性檢查,比如驗證所有分組的prop的總和是否為1盗棵。

????????5壮韭、取出該數(shù)據(jù)的一個子集:每對sex/year組合的前1000個名字

????????這樣也可以:

二、分析命名趨勢

????????有了完整的數(shù)據(jù)集和剛才生成的top1000數(shù)據(jù)集纹因,我們就可以開始分析各種命名趨勢了喷屋。首先將前1000個名字分為男女兩個部分:

1、生成一張按year和name統(tǒng)計總出生數(shù)透視表

2瞭恰、用DataFrame的plot方法繪制幾個名字的曲線圖

幾個男孩和女孩名字隨時間變化的使用數(shù)量

結論:從圖中可以看出屯曹,這幾個名字在美國人民的心目中已經(jīng)風光不再了。

三寄疏、評估命名多樣性的增長

????????1是牢、一種解釋是父母愿意給小孩起常見的名字越來越少。這個假設可以從數(shù)據(jù)中得到驗證陕截。一個辦法是計算最流行的1000個名字所占的比例驳棱,我按year和sex進行聚合并繪圖。

分性別統(tǒng)計的前1000個名字在總出生人數(shù)中的比例

????????結論:從圖中可以看出农曲,名字的多樣性確實出現(xiàn)了增長(前1000項的比例降低)社搅。

????????2、另一個驗證辦法是計算占總出生人數(shù)前50%的不同名字的數(shù)量乳规,這個數(shù)字不太好計算形葬。我們只考慮2010年男孩的名字:

????????在對prop降序排列之后,我們想知道前面多少個名字的人數(shù)加起來才夠50%暮的。雖然編寫一個for循環(huán)確實也能達到目的笙以,但NumPy有一種更聰明的矢量方式。先計算prop的累計和cumsum冻辩,然后再通過searchsorted方法找出0.5應該被插入在哪個位置才能保證不破壞順序:

????????由于數(shù)組索引是從0開始的猖腕,因此我們要給這個結果加1拆祈,即最終結果為117。拿1900年的數(shù)據(jù)來做個比較倘感,這個數(shù)字要小得多:

????????3放坏、現(xiàn)在就可以對所有year/sex組合執(zhí)行這個計算了。按這兩個字段進行groupby處理老玛,然后用一個函數(shù)計算各分組的這個值:

????????結論:從圖中可以看出淤年,女孩名字的多樣性總是比男孩的高,而且還在變得越來越高蜡豹。

四麸粮、最后一個字母的變革

? ? ? ?1、 近百年來镜廉,男孩名字在最后一個字母上的分布發(fā)生了顯著的變化豹休。為了了解具體的情況,我首先將全部出生數(shù)據(jù)在年度桨吊、性別以及末字母上進行了聚合:

選出具有一定代表性的三年:

????????2、接下來我們需要按總出生數(shù)對該表進行規(guī)范化處理凤巨,以便計算出各性別各末字母占總出生人數(shù)的比例:

????????3视乐、有了這個字母比例數(shù)據(jù)之后,就可以生成一張各年度各性別的條形圖了

男孩女孩名字中各個末字母的比例

? ? ? ?結論: 可以看出敢茁,從20世紀60年代開始佑淀,以字母"n"結尾的男孩名字出現(xiàn)了顯著的增長。

????????4彰檬、回到之前創(chuàng)建的那個完整表伸刃,按年度和性別對其進行規(guī)范化處理,并在男孩名字中選取幾個字母逢倍,最后進行轉置以便將各個列做成一個時間序列:

????????5捧颅、有了這個時間序列的DataFrame之后,就可以通過其plot方法繪制出一張趨勢圖

各年出生的男孩中名字以d/n/y結尾的人數(shù)比例

五较雕、變成女孩名字的男孩名字(以及相反的情況)

????????另一個有趣的趨勢是碉哑,早年流行于男孩的名字近年來“變性了”,例如Lesley或Leslie亮蒋】鄣洌回到top1000數(shù)據(jù)集,找出其中以"lesl"開頭的一組名字:

????????利用這個結果過濾掉其他的名字慎玖,并按名字分組計算出生數(shù)以查看相對頻率

????????然后利用這個結果過濾其他的名字贮尖,并按名字分組計算出生數(shù)以查看相對頻率:

????????按性別和年度進行聚合,并按年度進行規(guī)范化處理:

各年度使用“Lesley型”名字的男女比例

快速學習:

第一節(jié) NumPy基礎(一)

第二節(jié) NumPy基礎(二)

第三節(jié) Pandas入門基礎

第四節(jié) 數(shù)據(jù)加載、存儲

第五節(jié) 數(shù)據(jù)清洗

第六節(jié) 數(shù)據(jù)合并趁怔、重塑

第七節(jié) 數(shù)據(jù)聚合與分組運算

第八節(jié) 數(shù)據(jù)可視化

第九節(jié) pandas高級應用

第十節(jié) 時間序列

第十一節(jié) Python建模庫

數(shù)據(jù)分析案例--1880-2010年間全美嬰兒姓名的處理

數(shù)據(jù)分析案例--MovieLens 1M數(shù)據(jù)集

數(shù)據(jù)分析案例--USA.gov數(shù)據(jù)

數(shù)據(jù)分析案例--2012聯(lián)邦選舉委員會數(shù)據(jù)庫

數(shù)據(jù)分析案例--USDA食品數(shù)據(jù)庫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末湿硝,一起剝皮案震驚了整個濱河市薪前,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌图柏,老刑警劉巖序六,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚤吹,居然都是意外死亡例诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門裁着,熙熙樓的掌柜王于貴愁眉苦臉地迎上來繁涂,“玉大人,你說我怎么就攤上這事二驰∪幼铮” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵桶雀,是天一觀的道長矿酵。 經(jīng)常有香客問我,道長矗积,這世上最難降的妖魔是什么全肮? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮棘捣,結果婚禮上辜腺,老公的妹妹穿的比我還像新娘。我一直安慰自己乍恐,他們只是感情好评疗,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茵烈,像睡著了一般百匆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞧毙,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天胧华,我揣著相機與錄音,去河邊找鬼宙彪。 笑死矩动,一個胖子當著我的面吹牛,可吹牛的內容都是我干的释漆。 我是一名探鬼主播悲没,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了示姿?” 一聲冷哼從身側響起甜橱,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栈戳,沒想到半個月后岂傲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡子檀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年镊掖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褂痰。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡亩进,死狀恐怖,靈堂內的尸體忽然破棺而出缩歪,到底是詐尸還是另有隱情归薛,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布匪蝙,位于F島的核電站主籍,受9級特大地震影響,放射性物質發(fā)生泄漏逛球。R本人自食惡果不足惜崇猫,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望需忿。 院中可真熱鬧,春花似錦蜡歹、人聲如沸屋厘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汗洒。三九已至,卻和暖如春父款,著一層夾襖步出監(jiān)牢的瞬間溢谤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工憨攒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留世杀,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓肝集,卻偏偏與公主長得像瞻坝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杏瞻,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內容