六魔种、可視化
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
表格是一種組織和可視化數(shù)據(jù)的強(qiáng)大方式。然而粉洼,無論數(shù)據(jù)如何組織节预,數(shù)字的大型表格可能難以解釋。 有時(shí)解釋圖片比數(shù)字容易得多属韧。
在本章中安拟,我們將開發(fā)一些數(shù)據(jù)分析的基本圖形方法。 我們的數(shù)據(jù)源是互聯(lián)網(wǎng)電影數(shù)據(jù)庫(IMDB)宵喂,這是一個(gè)在線數(shù)據(jù)庫糠赦,包含電影,電視節(jié)目锅棕,和視頻游戲等信息拙泽。Box Office Mojo 網(wǎng)站提供了許多 IMDB 數(shù)據(jù)摘要,我們已經(jīng)采用了其中一些哲戚。 我們也使用了 The Numbers 的數(shù)據(jù)摘要奔滑,這個(gè)網(wǎng)站的口號(hào)是“數(shù)據(jù)和電影業(yè)務(wù)的相遇之處”艾岂。
散點(diǎn)圖和線形圖
actors
表包含好萊塢的男性和女性演員的數(shù)據(jù)顺少。 其中的列是:
列 | 內(nèi)容 |
---|---|
Actor | 演員名稱 |
Total Gross | 演員所有電影的國內(nèi)票房總收入(百萬美元) |
Number of Movies | 演員所演的電影數(shù)量 |
Average per Movie | 總收入除以電影數(shù)量 |
#1 Movie | 演員所演的票房最高的電影 |
Gross | 演員的 #1 電影的國內(nèi)票房總收入(百萬美元) |
在總票房的計(jì)算中,數(shù)據(jù)的制表人沒有包括一些電影王浴,其中演員是客串角色或陳述角色脆炎,沒有太多的登場時(shí)間。
這個(gè)表格有 50 行氓辣,對(duì)應(yīng)著 50 個(gè)最頂級(jí)的演員秒裕。 這個(gè)表已經(jīng)按照Total Gross
排序了,所以很容易看出钞啸,Harrison Ford
是最棒的演員几蜻。 總的來說,他的電影的國內(nèi)票房收入比其他演員的電影多体斩。
actors = Table.read_table('actors.csv')
actors
Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
---|---|---|---|---|---|
Harrison Ford | 4871.7 | 41 | 118.8 | Star Wars: The Force Awakens | 936.7 |
Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4 |
Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9 |
Tom Hanks | 4340.8 | 44 | 98.7 | Toy Story 3 | 415 |
Robert Downey, Jr. | 3947.3 | 53 | 74.5 | The Avengers | 623.4 |
Eddie Murphy | 3810.4 | 38 | 100.3 | Shrek 2 | 441.2 |
Tom Cruise | 3587.2 | 36 | 99.6 | War of the Worlds | 234.3 |
Johnny Depp | 3368.6 | 45 | 74.9 | Dead Man's Chest | 423.3 |
Michael Caine | 3351.5 | 58 | 57.8 | The Dark Knight | 534.9 |
Scarlett Johansson | 3341.2 | 37 | 90.3 | The Avengers | 623.4 |
(已省略 40 行)
術(shù)語梭稚。變量是我們稱之為“特征”的東西的正式名稱,比如'number of movies'
絮吵。 術(shù)語“變量”強(qiáng)調(diào)了弧烤,對(duì)于不同的個(gè)體,這個(gè)特征可以有不同的值 - 演員所演電影的數(shù)量因人而異蹬敲。
擁有數(shù)值的變量(如'number of movies'
或'average gross receipts per movie'
)的變量稱為定量或數(shù)值變量暇昂。
散點(diǎn)圖
散點(diǎn)圖展示兩個(gè)數(shù)值變量之間的關(guān)系莺戒。 在前面的章節(jié)中,我們看到了一個(gè)散點(diǎn)圖的例子急波,我們看了兩個(gè)經(jīng)典小說的時(shí)間段和角色數(shù)量从铲。
Table
的scatter
方法繪制一個(gè)散點(diǎn)圖,由表格的每一行組成幔崖。它的第一個(gè)參數(shù)是要在橫軸上繪制的列標(biāo)簽食店,第二個(gè)參數(shù)是縱軸上的列標(biāo)簽。
actors.scatter('Number of Movies', 'Total Gross')
散點(diǎn)圖包含 50 個(gè)點(diǎn)赏寇,表中的每個(gè)演員為一個(gè)吉嫩。 一般來說,你可以看到它向上傾斜嗅定。 一個(gè)演員的電影越多自娩,所有這些電影的總收入就越多。
在形式上渠退,我們說圖表顯示了變量之間的關(guān)聯(lián)忙迁,并且關(guān)聯(lián)是正的:一個(gè)變量的高值往往與另一個(gè)變量的高值相關(guān)聯(lián),而低值也是一樣碎乃,通常情況下姊扔。
當(dāng)然有一些變化。 一些演員有很多電影梅誓,但總收入中等恰梢。 其他人電影數(shù)量中等,但收入很高梗掰。正相關(guān)只是一個(gè)大體趨勢(shì)的敘述嵌言。
在課程后面,我們將學(xué)習(xí)如何量化關(guān)聯(lián)及穗。目前摧茴,我們只是定性地思考。
現(xiàn)在我們已經(jīng)探索了電影的數(shù)量與總收入的關(guān)系埂陆,讓我們把注意力轉(zhuǎn)向它與每部電影的平均收入的關(guān)系苛白。
actors.scatter('Number of Movies', 'Average per Movie')
這是一個(gè)截然不同的情況,并表現(xiàn)出負(fù)相關(guān)焚虱。 一般來說购裙,演員的電影數(shù)量越多,每部電影的平均收入就越少著摔。
另外缓窜,有一個(gè)點(diǎn)是非常高的,在繪圖的左邊。 它對(duì)應(yīng)于一個(gè)電影數(shù)量很少峭状,每部電影平均值很高的演員。 這個(gè)點(diǎn)是異常的。 它位于數(shù)據(jù)的一般范圍之外赫粥。 事實(shí)上喧笔,這與繪圖中的其他所有點(diǎn)相差甚遠(yuǎn)牌借。
我們將通過查看繪圖的左右兩端的點(diǎn)比然,來進(jìn)一步檢查負(fù)相關(guān)硕淑。
對(duì)于右端靶橱,我們通過查看沒有異常值的部分來放大圖的主體寥袭。
no_outlier = actors.where('Number of Movies', are.above(10))
no_outlier.scatter('Number of Movies', 'Average per Movie')
負(fù)相關(guān)仍然清晰可見。 讓我們找出一些演員关霸,對(duì)應(yīng)位于繪圖右側(cè)的點(diǎn)传黄,這里電影數(shù)量較多:
actors.where('Number of Movies', are.above(60))
Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
---|---|---|---|---|---|
Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4 |
Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9 |
Robert DeNiro | 3081.3 | 79 | 39 | Meet the Fockers | 279.3 |
Liam Neeson | 2942.7 | 63 | 46.7 | The Phantom Menace | 474.5 |
偉大的演員羅伯特·德尼羅(Robert DeNiro)擁有最高的電影數(shù)量和最低的每部電影的平均收入。 其他優(yōu)秀的演員在不遠(yuǎn)處的點(diǎn)队寇,但德尼羅在極遠(yuǎn)處膘掰。
為了理解負(fù)相關(guān),請(qǐng)注意佳遣,演員所演的電影越多识埋,在風(fēng)格,流派和票房方片零渐,這些電影變化就越大窒舟。 例如,一個(gè)演員可能會(huì)出現(xiàn)在一些高收入的動(dòng)作電影或喜劇中(如 Meet Fockers)诵盼,也可能是優(yōu)秀但不會(huì)吸引大量人群的小眾電影惠豺。 因此银还,演員的每部電影的平均收入值可能相對(duì)較低。
為了從不同的角度來看待這個(gè)觀點(diǎn)洁墙,現(xiàn)在讓我們來看看這個(gè)異常點(diǎn)见剩。
actors.where('Number of Movies', are.below(10))
Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross |
---|---|---|---|---|---|
Anthony Daniels | 3162.9 | 7 | 451.8 | Star Wars: The Force Awakens | 936.7 |
作為一名演員,安東尼·丹尼爾斯(Anthony Daniels)可能沒有羅伯特·德尼羅(Robert DeNiro)的身材扫俺。 但是他的 7 部電影的平均收入?yún)s高達(dá)每部電影近 4.52 億美元苍苞。
這些電影是什么? 你可能知道《星球大戰(zhàn):C-3PO》中的 Droid C-3PO狼纬,那是金屬機(jī)甲里面的安東尼·丹尼爾斯羹呵。 他扮演 C-3PO。
丹尼爾斯先生的全部電影(除了客串)都是由高收入的“星球大戰(zhàn)”系列電影組成的疗琉。 這就解釋了他的高平均收入和低電影數(shù)量冈欢。
類型和制作預(yù)算等變量,會(huì)影響電影數(shù)量與每部電影的平均收入之間的關(guān)聯(lián)盈简。 這個(gè)例子提醒人們凑耻,研究兩個(gè)變量之間的關(guān)聯(lián),往往也涉及到了解其他相關(guān)的變量柠贤。
線形圖
線形圖是最常見的可視化圖形之一香浩,通常用于研究時(shí)序型的趨勢(shì)和模式。
movies_by_year
表包含了 1980 年到 2015 年間臼勉,美國電影公司制作的電影的數(shù)據(jù)邻吭。這些列是:
列 | 內(nèi)容 |
---|---|
Year | 年份 |
Total Gross | 所有發(fā)行電影的國內(nèi)總票房收入(以百萬美元為單位) |
Number of Movies | 發(fā)行的電影數(shù)量 |
#1 Movie | 收入最高的電影 |
movies_by_year = Table.read_table('movies_by_year.csv')
movies_by_year
Year | Total Gross | Number of Movies | #1 Movie |
---|---|---|---|
2015 | 11128.5 | 702 | Star Wars: The Force Awakens |
2014 | 10360.8 | 702 | American Sniper |
2013 | 10923.6 | 688 | Catching Fire |
2012 | 10837.4 | 667 | The Avengers |
2011 | 10174.3 | 602 | Harry Potter / Deathly Hallows (P2) |
2010 | 10565.6 | 536 | Toy Story 3 |
2009 | 10595.5 | 521 | Avatar |
2008 | 9630.7 | 608 | The Dark Knight |
2007 | 9663.8 | 631 | Spider-Man 3 |
2006 | 9209.5 | 608 | Dead Man's Chest |
(省略了 26 行)
Table
的plot
方法產(chǎn)生線形圖。 它的兩個(gè)參數(shù)與散點(diǎn)圖相同:首先是橫軸上的列宴霸,然后是縱軸上的列囱晴。 這是 1980 年到 2015 年間每年發(fā)行的電影數(shù)量的線形圖。
movies_by_year.plot('Year', 'Number of Movies')
雖然每年的數(shù)字都有明顯的變化瓢谢,但圖形急劇上升畸写,然后呈現(xiàn)平緩的上升趨勢(shì)。 20 世紀(jì) 80 年代早期的劇增氓扛,部分是由于在上世紀(jì) 70 年代枯芬,電影制作人推動(dòng)電影業(yè)的幾年后,電影制片廠重新回到電影制作的前沿幢尚。
我們的重點(diǎn)將放在最近幾年破停。 根據(jù)電影的主題翅楼,對(duì)應(yīng) 2000 年到 2015 年的行尉剩,分配給名稱century_21
。
century_21 = movies_by_year.where('Year', are.above(1999))
century_21.plot('Year', 'Number of Movies')
2008 年的全球金融危機(jī)有明顯的效果 - 2009 年發(fā)行的電影數(shù)量急劇下降毅臊。
但是理茎,美元數(shù)量并沒有太大的變化。
century_21.plot('Year', 'Total Gross')
盡管發(fā)生了金融危機(jī),電影發(fā)行的數(shù)量也少得多皂林,但 2009 年的國內(nèi)總收入仍高于 2008 年朗鸠。
造成這種矛盾的一個(gè)原因是,人們?cè)诮?jīng)濟(jì)衰退時(shí)往往會(huì)去看電影础倍。 “經(jīng)濟(jì)低迷時(shí)期烛占,美國人涌向電影”,“紐約時(shí)報(bào)”于 2009 年 2 月說沟启。文章引用南加州大學(xué)的馬丁·卡普蘭(Martin Kaplan)的話說:“人們想要忘記自己的煩惱忆家,想和別人在一起〉录#” 當(dāng)節(jié)假日和昂貴的款待難以負(fù)擔(dān)芽卿,電影提供了受歡迎的娛樂和寬慰。
2009 年的高票房收入的另一個(gè)原因是胳搞,電影《阿凡達(dá)》及其 3D 版本卸例。 阿凡達(dá)不僅是 2009 年的第一部電影,它也是有史以來第二高的總票房電影肌毅,我們將在后面看到筷转。
century_21.where('Year', are.equal_to(2009))
Year | Total Gross | Number of Movies | #1 Movie |
---|---|---|---|
2009 | 10595.5 | 521 | Avatar |
類別分許
可視化類別分布
許多數(shù)據(jù)不以數(shù)字的形式出現(xiàn)。 數(shù)據(jù)可以是音樂片段悬而,或地圖上的地方旦装。 他們也可以是類別,你可以在里面放置個(gè)體摊滔。 以下是一些類別變量的例子阴绢。
- 個(gè)體是冰淇淋紙盒,變量就是紙盒里的味道艰躺。
- 個(gè)體是職業(yè)籃球運(yùn)動(dòng)員呻袭,變量是球員的隊(duì)伍。
- 個(gè)體是年腺兴,而變量是今年最高票房電影的流派左电。
- 個(gè)體是調(diào)查對(duì)象,變量是他們從“完全不滿意”页响,“有點(diǎn)滿意”和“非常滿意”中選擇的回答篓足。
icecream
表包含 30 盒冰激凌的數(shù)據(jù)。
icecream = Table().with_columns(
'Flavor', make_array('Chocolate', 'Strawberry', 'Vanilla'),
'Number of Cartons', make_array(16, 5, 9)
)
icecream
Flavor | Number of Cartons |
---|---|
Chocolate | 16 |
Strawberry | 5 |
Vanilla | 9 |
分類變量“口味”的值是巧克力闰蚕,草莓和香草栈拖。 表格顯示了每種口味的紙盒數(shù)量。 我們稱之為分布表没陡。 分布顯示了所有變量的值涩哟,以及每個(gè)變量的頻率索赏。
條形圖
條形圖是可視化類別分布的熟悉方式。 它為每個(gè)類別顯示一個(gè)條形贴彼。 條形的間隔相等绽族,寬度相同徐鹤。 每個(gè)條形的長度與相應(yīng)類別的頻率成正比。
我們使用橫條繪制條形圖,因?yàn)檫@樣更容易標(biāo)注條形圖悠轩。 所以Table
的方法稱為barh
芬失。 它有兩個(gè)參數(shù):第一個(gè)是類別的列標(biāo)簽袍啡,第二個(gè)是頻率的列標(biāo)簽辽旋。
icecream.barh('Flavor', 'Number of Cartons')
如果表格只包含一列類別和一列頻率(如冰淇淋),則方法調(diào)用甚至更簡單杂拨。 你可以指定包含類別的列专普,barh
將使用另一列中的值作為頻率。
icecream.barh('Flavor')
類別分布的特征
除了純粹的視覺差異之外弹沽,條形圖和我們?cè)谇懊嬲鹿?jié)中看到的兩個(gè)圖表之間還有一個(gè)重要的區(qū)別檀夹。 它們是散點(diǎn)圖和線圖,兩者都顯示兩個(gè)數(shù)值變量 - 兩個(gè)軸上的變量都是數(shù)值型的策橘。 相比之下炸渡,條形圖的一個(gè)軸上是類別,在另一個(gè)軸上具有數(shù)值型頻率丽已。
這對(duì)圖表有影響蚌堵。首先,每個(gè)條形的寬度和相鄰條形之間的間隔完全取決于生成圖的人沛婴,或者用于生成該圖的程序吼畏。 Python 為我們做了這些選擇。 如果你要手動(dòng)繪制條形圖嘁灯,則可以做出完全不同的選擇泻蚊,并且仍然會(huì)是完全正確的條形圖,前提是你使用相同寬度繪制了所有條形丑婿,并使所有間隔保持相同性雄。
最重要的是,條形可以以任何順序繪制羹奉。 “巧克力”秒旋,“香草”和“草莓”這些類別沒有普遍的等級(jí)順序,不像數(shù)字5, 7
和10
诀拭。
這意味著我們可以繪制一個(gè)易于解釋的條形圖迁筛,方法是按降序重新排列條形圖。 為了實(shí)現(xiàn)它炫加,我們首先按照Number of Cartons
的降序瑰煎,重新排列icecream
的行铺然,然后繪制條形圖俗孝。
icecream.sort('Number of Cartons', descending=True).barh('Flavor')
這個(gè)條形圖包含的信息和以前的完全一樣酒甸,但是它更容易閱讀。 雖然在只讀三個(gè)條形的情況下赋铝,這并不是一個(gè)巨大的收益插勤,但是當(dāng)分類數(shù)量很大時(shí),這可能是相當(dāng)重要的革骨。
組合分類數(shù)據(jù)
為了構(gòu)造icecream
表农尖,有人不得不查看 30 個(gè)冰淇淋盒子,并計(jì)算每種口味的數(shù)量良哲。 但是盛卡,如果我們的數(shù)據(jù)還沒有包含頻率,我們必須在繪制條形圖之前計(jì)算頻率筑凫。 這是一個(gè)例子滑沧,其中它是必要的。
top
表由美國歷史上最暢銷的電影組成巍实。 第一列包含電影的標(biāo)題滓技;《星球大戰(zhàn):原力覺醒》(Star Wars: The Force Awakens)排名第一,美國票房總額超過 9 億美元棚潦。 第二列包含制作電影的工作室的名稱令漂。 第三列包含國內(nèi)票房收入(美元),第四列包含按 2016 年價(jià)格計(jì)算的丸边,票面總收入叠必。 第五列包含電影的發(fā)行年份。
列表中有 200 部電影妹窖。 根據(jù)未調(diào)整的總收入挠唆,這是前十名。
top = Table.read_table('top_movies.csv')
top
Title | Studio | Gross | Gross (Adjusted) | Year |
---|---|---|---|---|
Star Wars: The Force Awakens | Buena Vista (Disney) | 906723418 | 906723400 | 2015 |
Avatar | Fox | 760507625 | 846120800 | 2009 |
Titanic | Paramount | 658672302 | 1178627900 | 1997 |
Jurassic World | Universal | 652270625 | 687728000 | 2015 |
Marvel's The Avengers | Buena Vista (Disney) | 623357910 | 668866600 | 2012 |
The Dark Knight | Warner Bros. | 534858444 | 647761600 | 2008 |
Star Wars: Episode I - The Phantom Menace | Fox | 474544677 | 785715000 | 1999 |
Star Wars | Fox | 460998007 | 1549640500 | 1977 |
Avengers: Age of Ultron | Buena Vista (Disney) | 459005868 | 465684200 | 2015 |
The Dark Knight Rises | Warner Bros. | 448139099 | 500961700 | 2012 |
(省略了 190 行)
迪斯尼的子公司布埃納維斯塔(Buena Vista)就像钢雎穑克斯(Fox)和華納兄弟(Warner Brothers)一樣玄组,經(jīng)常出現(xiàn)在前十名中 如果我們從 200 行中看,哪個(gè)工作室最常出現(xiàn)谒麦?
為了解決這個(gè)問題俄讹,首先要注意的是,我們需要的只是一個(gè)擁有電影和工作室的表格绕德;其他信息是不必要的患膛。
movies_and_studios = top.select('Title', 'Studio')
Table
的group
方法組允許我們,通過將每個(gè)工作室當(dāng)做一個(gè)類別耻蛇,并將每一行分配給一個(gè)類別踪蹬,來計(jì)算每個(gè)工作室出現(xiàn)在表中的頻率胞此。 group
方法將包含類別的列標(biāo)簽作為其參數(shù),并返回每個(gè)類別中行數(shù)量的表格跃捣。 數(shù)量列始終稱為count
漱牵,但如果你希望的話,則可以使用relabeled
更改該列疚漆。
movies_and_studios.group('Studio')
Studio | count |
---|---|
AVCO | 1 |
Buena Vista (Disney) | 29 |
Columbia | 10 |
Disney | 11 |
Dreamworks | 3 |
Fox | 26 |
IFC | 1 |
Lionsgate | 3 |
MGM | 7 |
MPC | 1 |
(省略了 14 行)
因此酣胀,group
創(chuàng)建一個(gè)分布表,顯示電影在類別(工作室)之間如何分布娶聘。
現(xiàn)在我們可以使用這個(gè)表格闻镶,以及我們上面獲得的圖形技能來繪制條形圖,顯示前 200 個(gè)最高收入的電影中丸升,哪個(gè)工作室是最常見的铆农。
studio_distribution = movies_and_studios.group('Studio')
studio_distribution.sort('count', descending=True).barh('Studio')
華納兄弟(Warner Brothers)和布埃納維斯塔(Buena Vista)是前 200 電影中最常見的工作室。 華納兄弟制作了哈利波特電影狡耻,布埃納維斯塔制作了星球大戰(zhàn)墩剖。
由于總收入以未經(jīng)調(diào)整的美元來衡量,所以最近幾年的頂級(jí)電影比過去幾十年更頻繁酝豪,這并不令人驚訝涛碑。 以絕對(duì)數(shù)量來看,現(xiàn)在的電影票價(jià)比以前更高孵淘,因此總收入也更高蒲障。 這是通過條形圖證明的,這些條形圖顯示了 200 部電影的發(fā)行年份瘫证。
movies_and_years = top.select('Title', 'Year')
movies_and_years.group('Year').sort('count', descending=True).barh('Year')
所有最長的條形都對(duì)應(yīng) 2000 年以后的年份揉阎。這與我們的觀察一致,即最近幾年應(yīng)該是最頻繁的背捌。
面向數(shù)值變量
這張圖有一些未解決的地方毙籽。 雖然它確實(shí)回答了這個(gè)問題,200 部最受歡迎的電影中毡庆,最常見的發(fā)行年份坑赡,但并沒有按時(shí)間順序列出所有年份。 它將年作為一個(gè)分類變量么抗。
但是毅否,年份是固定的時(shí)序單位,確實(shí)擁有順序蝇刀。 他們也有相對(duì)于彼此的固定的數(shù)值距離螟加。 讓我們看看當(dāng)我們?cè)噲D考慮它的時(shí)候會(huì)發(fā)生什么。
默認(rèn)情況下,barh
將類別(年)從最低到最高排序捆探。 所以我們將運(yùn)行這個(gè)代碼然爆,但不按count
進(jìn)行排序。
movies_and_years.group('Year').barh('Year')
現(xiàn)在年份是升序了黍图。 但是這個(gè)條形圖還是有點(diǎn)問題曾雕。 1921 年和 1937 年的條形與 1937 年和 1939 年的條形相距甚遠(yuǎn)。條形圖并沒有顯示出雌隅,200 部電影中沒有一部是在 1922 年到 1936 年間發(fā)布的翻默「孜郑基于這種可視化恰起,這種不一致和遺漏,使早期年份的分布難以理解趾牧。
條形圖用做類別變量的可視化检盼。 當(dāng)變量是數(shù)值,并且我們創(chuàng)建可視化時(shí)翘单,必須考慮其值之間的數(shù)值關(guān)系吨枉。 這是下一節(jié)的主題。
數(shù)值分布
可視化數(shù)值分布
數(shù)據(jù)科學(xué)家研究的許多變量是定量的或數(shù)值的哄芜。它們的值是你可以做算術(shù)的數(shù)字貌亭。我們所看到的例子包括一本書的章節(jié)數(shù)量,電影的收入以及美國人的年齡认臊。
類別變量的值可以按照數(shù)字編碼圃庭,但是這不會(huì)使變量成為定量的。在我們研究的失晴,按年齡組分類的人口普查數(shù)據(jù)的例子中剧腻,分類變量SEX
中,'Male'
的數(shù)字代碼為1
涂屁,'Female'
的數(shù)字代碼為2
书在,以及分組1
和2
的合計(jì)為0
。 1
和2
是數(shù)字拆又,在這種情況下儒旬,從2
中減1
或取0,1
和2
的平均值,或?qū)@三個(gè)值執(zhí)行其他算術(shù)是沒有意義的帖族。 SEX
是一個(gè)類別變量栈源,即使這些值已經(jīng)賦予一個(gè)數(shù)字代碼。
對(duì)于我們的主要示例盟萨,我們將返回到我們?cè)诳梢暬诸悢?shù)據(jù)時(shí)凉翻,所研究的數(shù)據(jù)集。這是一個(gè)表格捻激,它由美國歷史上最暢銷的電影中的數(shù)據(jù)組成制轰。為了方便起見前计,這里再次描述表格。
第一列包含電影的標(biāo)題垃杖。第二列包含制作電影的工作室的名稱男杈。第三個(gè)包含國內(nèi)票房總值(美元),第四個(gè)包含按 2016 年價(jià)格計(jì)算的票面收入總額调俘。第五個(gè)包含電影的發(fā)行年份伶棒。
列表中有 200 部電影。根據(jù)Gross
列中未調(diào)整的總收入肤无,這是前十名骇钦。
top = Table.read_table('top_movies.csv')
# Make the numbers in the Gross and Gross (Adjusted) columns look nicer:
top.set_format([2, 3], NumberFormatter)
Title | Studio | Gross | Gross (Adjusted) | Year |
---|---|---|---|---|
Star Wars: The Force Awakens | Buena Vista (Disney) | 906,723,418 | 906,723,400 | 2015 |
Avatar | Fox | 760,507,625 | 846,120,800 | 2009 |
Titanic | Paramount | 658,672,302 | 1,178,627,900 | 1997 |
Jurassic World | Universal | 652,270,625 | 687,728,000 | 2015 |
Marvel's The Avengers | Buena Vista (Disney) | 623,357,910 | 668,866,600 | 2012 |
The Dark Knight | Warner Bros. | 534,858,444 | 647,761,600 | 2008 |
Star Wars: Episode I - The Phantom Menace | Fox | 474,544,677 | 785,715,000 | 1999 |
Star Wars | Fox | 460,998,007 | 1,549,640,500 | 1977 |
Avengers: Age of Ultron | Buena Vista (Disney) | 459,005,868 | 465,684,200 | 2015 |
The Dark Knight Rises | Warner Bros. | 448,139,099 | 500,961,700 | 2012 |
(省略了 190 行)
可視化調(diào)整后收入的分布
在本節(jié)中眯搭,我們將繪制Gross (Adjusted)
列中數(shù)值變量的分布圖窥翩。 為了簡單起見,我們創(chuàng)建一個(gè)包含我們所需信息的小表鳞仙。 而且由于三位數(shù)字比九位數(shù)字更容易處理寇蚊,我們以百萬美元衡量調(diào)整后的總收入。 注意如何使用舍入僅保留兩位小數(shù)棍好。
millions = top.select(0).with_column('Adjusted Gross',
np.round(top.column(3)/1e6, 2))
millions
Title | Adjusted Gross |
---|---|
Star Wars: The Force Awakens | 906.72 |
Avatar | 846.12 |
Titanic | 1178.63 |
Jurassic World | 687.73 |
Marvel's The Avengers | 668.87 |
The Dark Knight | 647.76 |
Star Wars: Episode I - The Phantom Menace | 785.72 |
Star Wars | 1549.64 |
Avengers: Age of Ultron | 465.68 |
The Dark Knight Rises | 500.96 |
直方圖
數(shù)值數(shù)據(jù)集的直方圖看起來非常像條形圖仗岸,雖然它有一些重要的差異,我們將在本節(jié)中討論梳玫。 首先爹梁,我們只畫出調(diào)整后收入的直方圖。
hist方法生成列中值的直方圖提澎。 可選的單位參數(shù)用于兩個(gè)軸上的標(biāo)簽姚垃。 直方圖顯示調(diào)整后的總額分布,以百萬美元為單位盼忌。
millions.hist('Adjusted Gross', unit="Million Dollars")
橫軸
這些金額已被分組為連續(xù)的間隔积糯,稱為桶。盡管在這個(gè)數(shù)據(jù)集中看成,沒有電影正好在兩個(gè)桶之間的邊緣上,但是hist
必須考慮數(shù)值可能在邊緣的情況梦重。所以hist
有一個(gè)端點(diǎn)約定:bin
包含左端點(diǎn)的數(shù)據(jù)降瞳,但不包含右端點(diǎn)的數(shù)據(jù)。
我們使用符號(hào)[a, b)
表示從a
開始并在b
結(jié)束但不包括b
的桶扔枫。
有時(shí)贞岭,必須在第一個(gè)或最后一個(gè)箱中進(jìn)行調(diào)整话速,以確保包含變量的最小值和最大值。在前面研究的人口普查數(shù)據(jù)中,你看到了一個(gè)這樣的調(diào)整的例子研乒,其中“100”歲的年齡實(shí)際上意味著“100 歲以上”。
我們可以看到竿报,有 10 個(gè)桶(有些桶很低,難以看到)侨嘀,而且它們的寬度都是一樣的。我們也可以看到涨共,沒有一部電影的收入不到三億美元,那是因?yàn)槲覀冎豢紤]有史以來最暢銷的電影。
準(zhǔn)確看到桶的末端在哪里魁索,有點(diǎn)困難。例如鹏控,精確地確定值 500 位于橫軸上的位置并不容易。所以很難判斷一個(gè)條形的結(jié)束位置和下一個(gè)條形的開始位置缘揪。
可選參數(shù)bins
可以與hist
一起使用來指定桶的端點(diǎn)澡刹。它必須由一系列數(shù)字組成陆赋,這些數(shù)字以第一個(gè)桶的左端開始赖临,以最后一個(gè)桶的右端結(jié)束。我們首先將桶中的數(shù)字設(shè)置為300,400,500
等等吵聪,以2000
結(jié)尾。
millions.hist('Adjusted Gross', bins=np.arange(300,2001,100), unit="Million Dollars")
這個(gè)圖的橫軸比較容易閱讀。 標(biāo)簽200,400,600
等以對(duì)應(yīng)的值為中心囱井。 最高的條形是對(duì)應(yīng)三億到四億美元之間的電影。
少數(shù)電影投入了 8 億美元甚至更多料祠。 這導(dǎo)致這個(gè)數(shù)字“向右傾斜”敛苇,或者更不正式地說,“右側(cè)長尾”来涨。 大量人口的收入或租金等變量的分布也經(jīng)常具有這種形式技羔。
桶的數(shù)量
可以使用bin
方法從一個(gè)表格中計(jì)算出桶中的值的數(shù)量,該方法接受列標(biāo)簽或索引,以及可選的序列或桶的數(shù)量时呀。 結(jié)果是直方圖的表格形式。 第一列列出了桶的左端點(diǎn)(但請(qǐng)參閱下面關(guān)于最終值的注釋)。 第二列包含Adjusted Gross
列中所有值在相應(yīng)桶中的數(shù)量坞靶。 也就是說,它計(jì)數(shù)所有Adjusted Gross
的所有值尿这,它們大于或等于bin
中的值晃财,但小于下一個(gè)bin
中的值罗洗。
bin_counts = millions.bin('Adjusted Gross', bins=np.arange(300,2001,100))
bin_counts.show()
bin | Adjusted Gross count |
---|---|
300 | 81 |
400 | 52 |
500 | 28 |
600 | 16 |
700 | 7 |
800 | 5 |
900 | 3 |
1000 | 1 |
1100 | 3 |
1200 | 2 |
1300 | 0 |
1400 | 0 |
1500 | 1 |
1600 | 0 |
1700 | 1 |
1800 | 0 |
1900 | 0 |
2000 | 0 |
注意最后一行的bin
值 2000厢洞。 這不是任何條形的左端點(diǎn) - 這是最后一個(gè)條形的右端點(diǎn)卫玖。 按照端點(diǎn)約定假瞬,那里的數(shù)據(jù)不包括在內(nèi)。 因此,相應(yīng)的計(jì)數(shù)記錄為 0榜田,并且即使已經(jīng)有超過二十億美元的電影也被記錄為 0疑枯。 當(dāng)bin
或hist
使用bin
參數(shù)調(diào)用時(shí)废亭,圖只考慮在指定bin
中的值氓拼。
一旦數(shù)值已經(jīng)分入桶中拟逮,所得數(shù)量可以用來使用bin_column
命名參數(shù)來生成直方圖凭迹,以指定哪個(gè)列包含桶的下界。
bin_counts.hist('Adjusted Gross count', bin_column='bin', unit='Million Dollars')
縱軸:密度刻度
一旦我們已經(jīng)照顧到細(xì)節(jié),如桶的末端蚀狰,直方圖的橫軸易于閱讀。 縱軸的特征需要更多關(guān)注。 我們會(huì)一一講解糙箍。
我們先來看看如何計(jì)算垂直軸上的數(shù)字咕晋。 如果計(jì)算看起來有些奇怪掌呜,請(qǐng)耐心等待 - 本節(jié)的其余部分將解釋原因。
計(jì)算坪哄。每個(gè)條形的高度是桶中的元素的百分比质蕉,除以桶的寬度。
譯者注:存在很多種直方圖翩肌,比如頻數(shù)直方圖念祭、頻率質(zhì)量直方圖和頻率密度直方圖濒旦。它們的縱軸數(shù)值不相同慷荔,但是圖形形狀是一樣的唯笙。這里是最后一種挽放,頻率密度直方圖潦刃。
counts = bin_counts.relabeled('Adjusted Gross count', 'Count')
percents = counts.with_column(
'Percent', (counts.column('Count')/200)*100
)
heights = percents.with_column(
'Height', percents.column('Percent')/100
)
heights
bin | Count | Percent | Height |
---|---|---|---|
300 | 81 | 40.5 | 0.405 |
400 | 52 | 26 | 0.26 |
500 | 28 | 14 | 0.14 |
600 | 16 | 8 | 0.08 |
700 | 7 | 3.5 | 0.035 |
800 | 5 | 2.5 | 0.025 |
900 | 3 | 1.5 | 0.015 |
1000 | 1 | 0.5 | 0.005 |
1100 | 3 | 1.5 | 0.015 |
1200 | 2 | 1 | 0.01 |
(省略了 8 行)
在上面直方圖的縱軸上查看數(shù)字,檢查列高度是否正確包吝。
如果我們只查看表格的第一行,計(jì)算就會(huì)變得清晰只酥。
請(qǐng)記住,數(shù)據(jù)集中有 200 部電影。這個(gè)[300,400)
的桶包含 81 部電影。這是所有電影的 40.5%:[圖片上傳失敗...(image-82e123-1511010602425)]。
[300, 400)
桶的寬度是400-300 = 100
芒划。所以 [圖片上傳失敗...(image-acb1a7-1511010602425)]俊犯。
用于計(jì)算高度的代碼使用了總共??有 200 個(gè)電影,以及每個(gè)箱的寬度是 100 的事實(shí)。
單位谣蠢。條形的高度是 40.5% 除以 1 億美元次哈,因此高度是 0.405% 每百萬美元占调。
這種繪制直方圖的方法創(chuàng)建了一個(gè)垂直軸取试,它是在密度刻度上的渣窜。條形的高度不是桶中條目的百分比;它是桶中的條目除以桶的寬度。這就是為什么高度衡量擁擠度或密度招刨。
讓我們看看為什么這很重要霎俩。
不等的桶
直方圖相比條形圖的一個(gè)優(yōu)點(diǎn)是,直方圖可以包含不等寬度的桶沉眶。 以下將Millions
中的值分為三個(gè)不均勻的類別打却。
uneven = make_array(300, 400, 600, 1500)
millions.hist('Adjusted Gross', bins=uneven, unit="Million Dollars")
這里是三個(gè)桶中的數(shù)量。
millions.bin('Adjusted Gross', bins=uneven)
bin | Adjusted Gross count |
---|---|
300 | 81 |
400 | 80 |
600 | 37 |
1500 | 0 |
雖然范圍[300,400)
和[400,600)
具有幾乎相同的計(jì)數(shù)谎倔,但前者的高度是后者的兩倍柳击,因?yàn)樗挥幸话氲膶挾取?[300,400)
中的值的密度是[400,600)
中的密度的兩倍。
直方圖幫助我們可視化數(shù)軸上數(shù)據(jù)最集中的地方片习,特別是當(dāng)桶不均勻的時(shí)候捌肴。
僅僅繪制數(shù)量的問題
可以使用hist
方法的normed=False
選項(xiàng)直接在圖表中顯示數(shù)量。 生成的圖表與直方圖具有相同的形狀藕咏,但這些桶的寬度均相等状知,盡管縱軸上的數(shù)字不同。
millions.hist('Adjusted Gross', bins=np.arange(300,2001,100), normed=False)
雖然數(shù)量刻度可能比密度刻度更自然孽查,但當(dāng)桶寬度不同時(shí)饥悴,圖表高度的有誤導(dǎo)性。 下面看起來(由于計(jì)數(shù))高收入電影相當(dāng)普遍盲再,事實(shí)上我們已經(jīng)看到它們相對(duì)較少西设。
millions.hist('Adjusted Gross', bins=uneven, normed=False)
即使使用的方法被稱為hist
,上面的圖不是一個(gè)直方圖答朋。 誤導(dǎo)性地夸大了至少 6 億美元的電影比例贷揽。 每個(gè)桶的高度只是按照桶中的電影數(shù)量繪制,而不考慮桶寬度的差異绿映。
如果最后兩個(gè)桶組合起來擒滑,情況就變得更加荒謬了腐晾。
very_uneven = make_array(300, 400, 1500)
millions.hist('Adjusted Gross', bins=very_uneven, normed=False)
在這個(gè)基于數(shù)量的圖像中,電影分布完全失去了形狀丐一。
直方圖:通用原則和計(jì)算
上圖顯示藻糖,眼睛將面積視為“較大”的東西,而不是高度库车。當(dāng)桶的寬度不同時(shí)巨柒,這種觀察變得尤為重要。
這就是直方圖具有兩個(gè)定義屬性的原因:
- 桶按比例繪制并且是連續(xù)的(盡管有些可能是空的)柠衍,因?yàn)闄M軸上的值是數(shù)值型的洋满。
- 每個(gè)條形的面積與桶中的條目數(shù)成比例。
屬性(2)是繪制直方圖的關(guān)鍵珍坊,通常實(shí)現(xiàn)如下:
條形的面積 = 桶中條目的百分比
高度的計(jì)算僅僅使用了一個(gè)事實(shí)牺勾,條形是長方形的。
條形的面積 = 條形的高度 * 桶的寬度
因此阵漏,
條形的高度 = 條形的面積 / 桶的寬度
= 桶中條目的百分比 / 桶的寬度
高度的單位是“百分比每橫軸單位”驻民。
當(dāng)使用這種方法繪制時(shí),直方圖被稱為在密度刻度上繪制履怯。 在這個(gè)刻度上:
- 每個(gè)條形的面積等于相應(yīng)桶中的數(shù)據(jù)值的百分比回还。
- 直方圖中所有條形的總面積為 100%。 從比例的角度來講叹洲,我們說直方圖中所有條形的面積“總計(jì)為 1”柠硕。
平頂和細(xì)節(jié)水平
即使密度刻度使用面積正確表示了百分比,但是通過將值分組到桶中蝗柔,丟失了一些細(xì)節(jié)。
再看一下下圖中的[300,400)
的桶诫咱。 值為“0.405% 每百萬美元”的桶的平頂坎缭,隱藏了電影在這個(gè)桶分布有些不均勻的事實(shí)掏呼。
millions.hist('Adjusted Gross', bins=uneven, unit="Million Dollars")
為了看到它,讓我們將[300, 400)
劃分為更窄的 10 個(gè)桶铅檩。每個(gè)桶的寬度都是一千萬美元憎夷。
some_tiny_bins = make_array(300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 600, 1500)
millions.hist('Adjusted Gross', bins=some_tiny_bins, unit='Million Dollars')
直方圖 Q&A
讓我們?cè)佼嬕槐橹狈綀D,這次只有四個(gè)桶昧旨,檢查我們對(duì)概念的理解拾给。
uneven_again = make_array(300, 350, 400, 450, 1500)
millions.hist('Adjusted Gross', bins=uneven_again, unit='Million Dollars')
millions.bin('Adjusted Gross', bins=uneven_again)
bin | Adjusted Gross count |
---|---|
300 | 32 |
350 | 49 |
400 | 25 |
450 | 92 |
1500 | 0 |
再次查看直方圖祥得,并將[400,450)
的桶與[450,1500)
桶進(jìn)行比較。
問:哪個(gè)桶里面有更多的電影蒋得?
答:[450,1500)
的桶级及。它有 92 部電影,而[400,450)
桶中有 25 部電影额衙。
問:那么為什么[450,1500)
的桶比[400,450)
桶短得多呢饮焦?
答:因?yàn)楦叨却硗袄锩繂挝豢臻g的密度,而不是桶里的電影數(shù)量窍侧。 [450,1500)
的桶中的電影確實(shí)比[400,450)
的桶多县踢,但它也是一個(gè)大桶。 所以它不那么擁擠伟件。 其中的電影密度要低得多硼啤。
條形圖和直方圖的區(qū)別
- 條形圖為每個(gè)類別展示一個(gè)數(shù)量。 它們通常用于顯示類別變量的分布斧账。 直方圖顯示定量變量的分布丙曙。
- 條形圖中的所有條形都具有相同的寬度,相鄰的條形之間有相等的間距其骄。 直方圖的條形可以具有不同的寬度,并且是連續(xù)的扯旷。
- 條形圖中條形的長度(或高度拯爽,如果垂直繪制)與每個(gè)類別的值成正比。 直方圖中條形的高度是密度的度量钧忽;直方圖中的條形的面積與桶中的條目數(shù)量成正比毯炮。
重疊的圖表
在這一章中,我們學(xué)習(xí)了如何通過繪制圖表來顯示數(shù)據(jù)耸黑。 這種可視化的常見用法是比較兩個(gè)數(shù)據(jù)集桃煎。 在本節(jié)中,我們將看到如何疊加繪圖大刊,即將它們繪制在單個(gè)圖形中为迈,擁有同一對(duì)坐標(biāo)軸
為了使重疊有意義,重疊的圖必須表示相同的變量并以相同的單位進(jìn)行測(cè)量缺菌。
為了繪制重疊圖葫辐,可以用相同的方法調(diào)用scatter
,plot
和barh
方法伴郁。 對(duì)于scatter
和plot
耿战,一列必須作為所有疊加圖的公共橫軸。 對(duì)于barh
焊傅,一列必須作為一組類別的公共軸剂陡。 一般的調(diào)用看起來像這樣:
name_of_table.method(column_label_of_common_axis, array_of_labels_of_variables_to_plot)
更常見的是解寝,我們首先僅僅選取圖表所需的列。之后通過指定共同軸上的變量來調(diào)用方法同木。
name_of_table.method(column_label_of_common_axis)
散點(diǎn)圖
高爾頓(Franics Galton嘹害,1822 ~ 1911 年)是一位英國博學(xué)家,他是分析數(shù)值變量之間關(guān)系的先驅(qū)纤泵。 他對(duì)有爭議的優(yōu)生學(xué)領(lǐng)域特別感興趣骆姐,實(shí)際上,他創(chuàng)造了這個(gè)術(shù)語 - 這涉及到如何將物理特征從一代傳到下一代捏题。
高爾頓精心收集了大量的數(shù)據(jù)玻褪,其中一些我們將在本課程中分析。 這是高爾頓的公荧,有關(guān)父母及其子女身高的數(shù)據(jù)的子集带射。 具體來說,數(shù)據(jù)由 179 名男性組成循狰,他們?cè)诩彝ブ械谝粋€(gè)出生窟社。數(shù)據(jù)是他們自己的高度和父母的高度。所有的高度都是以英寸來測(cè)量的绪钥。
heights = Table.read_table('galton_subset.csv')
heights
father | mother | son |
---|---|---|
78.5 | 67 | 73.2 |
75.5 | 66.5 | 73.5 |
75 | 64 | 71 |
75 | 64 | 70.5 |
75 | 58.5 | 72 |
74 | 68 | 76.5 |
74 | 62 | 74 |
73 | 67 | 71 |
73 | 67 | 68 |
73 | 66.5 | 71 |
(省略了 169 行)
scatter
方法使我們能夠可視化灿里,兒子的身高如何與父母的身高有關(guān)。 在圖中程腹,兒子的身高將形成公共的橫軸匣吊。
heights.scatter('son')
注意我們僅僅指定了公共的橫軸上的變量(兒子的身高)。 Python 繪制了兩個(gè)散點(diǎn)圖:這個(gè)變量和另外兩個(gè)之間的關(guān)系寸潦,每個(gè)關(guān)系一個(gè)色鸳。
金色和藍(lán)色的散點(diǎn)圖向上傾斜,并顯示出兒子的高度和父母的高度之間的正相關(guān)见转。 藍(lán)色(父親)的繪圖一般比金色高命雀,因?yàn)楦赣H一般比母親高。
線形圖
我們的下一個(gè)例子涉及更近的兒童數(shù)據(jù)斩箫。 我們將返回到人口普查數(shù)據(jù)表us_pop
吏砂,再次在下面創(chuàng)建用于參考。 由此校焦,我們將提取 0 至 18 歲年齡段的所有兒童的數(shù)量赊抖。
# Read the full Census table
census_url = 'http://www2.census.gov/programs-surveys/popest/datasets/2010-2015/national/asrh/nc-est2015-agesex-res.csv'
full_census_table = Table.read_table(census_url)
# Select columns from the full table and relabel some of them
partial_census_table = full_census_table.select(['SEX', 'AGE', 'POPESTIMATE2010', 'POPESTIMATE2014'])
us_pop = partial_census_table.relabeled('POPESTIMATE2010', '2010').relabeled('POPESTIMATE2014', '2014')
# Access the rows corresponding to all children, ages 0-18
children = us_pop.where('SEX', are.equal_to(0)).where('AGE', are.below(19)).drop('SEX')
children.show()
AGE | 2010 | 2014 |
---|---|---|
0 | 3951330 | 3949775 |
1 | 3957888 | 3949776 |
2 | 4090862 | 3959664 |
3 | 4111920 | 4007079 |
4 | 4077551 | 4005716 |
5 | 4064653 | 4006900 |
6 | 4073013 | 4135930 |
7 | 4043046 | 4155326 |
8 | 4025604 | 4120903 |
9 | 4125415 | 4108349 |
10 | 4187062 | 4116942 |
11 | 4115511 | 4087402 |
12 | 4113279 | 4070682 |
13 | 4119666 | 4171030 |
14 | 4145614 | 4233839 |
15 | 4231002 | 4164796 |
16 | 4313252 | 4168559 |
17 | 4376367 | 4186513 |
18 | 4491005 | 4227920 |
現(xiàn)在我們可以繪制兩個(gè)疊加的線形圖,顯示 2010 年和 2014 年的不同年齡的兒童人數(shù)寨典。方法調(diào)用類似于前面例子中的scatter
調(diào)用氛雪。
children.plot('AGE')
在這個(gè)刻度上,重要的是要記住我們只有0,1,2
歲等等的數(shù)據(jù)耸成。 兩個(gè)圖形的點(diǎn)相互“交織”报亩。
這些圖表在一些地方相互交叉:例如浴鸿,2010 年的 4 歲人數(shù)比 2014 年多,2014 年的 14 歲人數(shù)比 2010 年多弦追。
當(dāng)然岳链,2014 年的 14 歲兒童大部分都是 2010 年的 10 歲兒童。為了看到這一點(diǎn)劲件,請(qǐng)查看 14 歲的金色圖表和 10 歲的藍(lán)色圖表掸哑。事實(shí)上,你會(huì)注意到零远,整個(gè)金色圖表(2014 年)看起來像藍(lán)色圖表(2010 年)向右滑了 4 年苗分。 由于 2010 年至 2014 年間進(jìn)入該國的兒童的凈效應(yīng),這個(gè)下滑幅度還是有所上升牵辣, 幸運(yùn)的是摔癣,在這些年代,沒有太多的生命損失纬向。
條形圖
對(duì)于本節(jié)的最后一個(gè)例子择浊,我們看看加利福尼亞州以及整個(gè)美國的成人和兒童的種族分布情況。
凱撒家庭基金會(huì)根據(jù)人口普查數(shù)據(jù)逾条,編制了美國人口種族分布情況琢岩。基金會(huì)的網(wǎng)站提供了 2014 年整個(gè)美國人口以及當(dāng)年 18 歲以下的美國兒童的數(shù)據(jù)匯總师脂。
這里是一個(gè)表格粘捎,采用了美國和加利福尼亞州的數(shù)據(jù)。 這些列代表美國和加利福尼亞州的每個(gè)人危彩,美國和加州的兒童。 表格的主體包含不同類別的比例泳桦。 每一列顯示了汤徽,該列對(duì)應(yīng)的人群的種族分布。 所以在每一列中灸撰,條目總計(jì)為 1谒府。
usa_ca = Table.read_table('usa_ca_2014.csv')
usa_ca
Ethnicity | USA All | CA All | USA Children | CA Children |
---|---|---|---|---|
Black | 0.12 | 0.05 | 0.14 | 0.05 |
Hispanic | 0.18 | 0.38 | 0.24 | 0.5 |
White | 0.62 | 0.39 | 0.52 | 0.29 |
Other | 0.08 | 0.18 | 0.1 | 0.16 |
我們自然想要比較這些分布。 直接比較列是有意義的浮毯,因?yàn)樗袟l目都是比例完疫,因此在相同刻度上。
barh
方法允許我們通過在相同軸域上繪制多個(gè)條形圖债蓝,將比較可視化壳鹤。這個(gè)調(diào)用類似于scatter
和plot
:我們必須指定類別的公共軸。
譯者注:軸域(Axes)是橫軸和縱軸圍城的區(qū)域饰迹。
usa_ca.barh('Ethnicity')
雖然繪制疊加的條形圖非常簡單芳誓,但是我們可以在這個(gè)圖表上找到太多的信息余舶,以便能夠理清種群之間的相似性和差異性。 似乎很清楚的是锹淌,美國所有人和美國兒童的種族分布比任何其他列都更相似匿值,但是一次比較一對(duì)要容易得多。
首先比較美國和加利福尼亞的整個(gè)人口赂摆。
usa_ca.select('Ethnicity', 'USA All', 'CA All').barh('Ethnicity')
這兩個(gè)分布是完全不同的挟憔。 加利福尼亞州的拉美裔和其他類別比例較高,黑人和白人比例相應(yīng)較低烟号。 這種差異主要是由于绊谭,加利福尼亞州的地理位置和移民模式,無論是歷史上還是近幾十年來褥符。 例如龙誊,加利福尼亞的“其他”類別包括相當(dāng)一部分亞洲人和太平洋島民。
從圖中可以看出喷楣,2014 年加州近 40% 的人口是拉美裔趟大。 與該州兒童人口的比較表明,未來幾年拉美裔人口的比例可能會(huì)更高铣焊。 在加州兒童中逊朽,50% 屬于拉美裔。
usa_ca.select('Ethnicity', 'CA All', 'CA Children').barh('Ethnicity')
更復(fù)雜的數(shù)據(jù)集自然會(huì)產(chǎn)生各種有趣的可視化效果曲伊,包括不同種類的重疊圖形叽讳。 為了分析這些數(shù)據(jù),獲得更多的數(shù)據(jù)操作技能的有幫助的坟募,這樣我們就可以將數(shù)據(jù)轉(zhuǎn)化為一種形式岛蚤,使我們能夠使用本節(jié)中的方法。 在下一章中懈糯,我們將介紹其中的一些技巧涤妒。