Python數(shù)據(jù)可視化的10種技能

今天我來給你講講Python的可視化技術(shù)谭企。

如果你想要用Python進(jìn)行數(shù)據(jù)分析冻璃,就需要在項(xiàng)目初期開始進(jìn)行探索性的數(shù)據(jù)分析,這樣方便你對(duì)數(shù)據(jù)有一定的了解歌径。其中最直觀的就是采用數(shù)據(jù)可視化技術(shù)毁嗦,這樣,數(shù)據(jù)不僅一目了然回铛,而且更容易被解讀狗准。同樣在數(shù)據(jù)分析得到結(jié)果之后,我們還需要用到可視化技術(shù)茵肃,把最終的結(jié)果呈現(xiàn)出來腔长。

可視化視圖都有哪些?

按照數(shù)據(jù)之間的關(guān)系验残,我們可以把可視化視圖劃分為4類捞附,它們分別是比較、聯(lián)系、構(gòu)成和分布鸟召。我來簡(jiǎn)單介紹下這四種關(guān)系的特點(diǎn):

比較:比較數(shù)據(jù)間各類別的關(guān)系想鹰,或者是它們隨著時(shí)間的變化趨勢(shì),比如折線圖药版;

聯(lián)系:查看兩個(gè)或兩個(gè)以上變量之間的關(guān)系辑舷,比如散點(diǎn)圖;

構(gòu)成:每個(gè)部分占整體的百分比槽片,或者是隨著時(shí)間的百分比變化何缓,比如餅圖;

分布:關(guān)注單個(gè)變量还栓,或者多個(gè)變量的分布情況碌廓,比如直方圖。

同樣剩盒,按照變量的個(gè)數(shù)谷婆,我們可以把可視化視圖劃分為單變量分析和多變量分析。

  • 單變量分析指的是一次只關(guān)注一個(gè)變量辽聊。比如我們只關(guān)注“身高”這個(gè)變量纪挎,來看身高的取值分布,而暫時(shí)忽略其他變量跟匆。
  • 多變量分析可以讓你在一張圖上可以查看兩個(gè)以上變量的關(guān)系异袄。比如“身高”和“年齡”,你可以理解是同一個(gè)人的兩個(gè)參數(shù)玛臂,這樣在同一張圖中可以看到每個(gè)人的“身高”和“年齡”的取值烤蜕,從而分析出來這兩個(gè)變量之間是否存在某種聯(lián)系。

可視化的視圖可以說是分門別類迹冤,多種多樣讽营,今天我主要介紹常用的10種視圖,包括了散點(diǎn)圖泡徙、折線圖橱鹏、直方圖、條形圖锋勺、箱線圖蚀瘸、餅圖狡蝶、熱力圖庶橱、蜘蛛圖、二元變量分布贪惹、成對(duì)關(guān)系苏章。

散點(diǎn)圖

散點(diǎn)圖的英文叫做scatter plot,它將兩個(gè)變量的值顯示在二維坐標(biāo)中,非常適合展示兩個(gè)變量之間的關(guān)系枫绅。當(dāng)然泉孩,除了二維的散點(diǎn)圖,我們還有三維的散點(diǎn)圖并淋。

我在上一講中給你簡(jiǎn)單介紹了下Matplotlib這個(gè)工具寓搬,在Matplotlib中,我們經(jīng)常會(huì)用到pyplot這個(gè)工具包县耽,它包括了很多繪圖函數(shù)句喷,類似Matlab的繪圖框架。在使用前你需要進(jìn)行引用:

import matplotlib.pyplot as plt

在工具包引用后兔毙,畫散點(diǎn)圖唾琼,需要使用plt.scatter(x, y, marker=None)函數(shù)。x澎剥、y 是坐標(biāo)锡溯,marker代表了標(biāo)記的符號(hào)。比如“x”哑姚、“>”或者“o”祭饭。選擇不同的marker,呈現(xiàn)出來的符號(hào)樣式也會(huì)不同叙量,你可以自己試一下甜癞。

下面三張圖分別對(duì)應(yīng)“x”“>”和“o”。

image
image
image

除了Matplotlib外宛乃,你也可以使用Seaborn進(jìn)行散點(diǎn)圖的繪制悠咱。在使用Seaborn前,也需要進(jìn)行包引用:

import seaborn as sns

在引用seaborn工具包之后征炼,就可以使用seaborn工具包的函數(shù)了析既。如果想要做散點(diǎn)圖,可以直接使用sns.jointplot(x, y, data=None, kind='scatter')函數(shù)谆奥。其中x眼坏、y是data中的下標(biāo)。data就是我們要傳入的數(shù)據(jù)酸些,一般是DataFrame類型宰译。kind這類我們?nèi)catter,代表散點(diǎn)的意思魄懂。當(dāng)然kind還可以取其他值沿侈,這個(gè)我在后面的視圖中會(huì)講到,不同的kind代表不同的視圖繪制方式市栗。

好了缀拭,讓我們來模擬下咳短,假設(shè)我們的數(shù)據(jù)是隨機(jī)的1000個(gè)點(diǎn)。

image

我們運(yùn)行一下這個(gè)代碼蛛淋,就可以看到下面的視圖(第一張圖為Matplotlib繪制的咙好,第二張圖為Seaborn繪制的)。其實(shí)你能看到Matplotlib和Seaborn的視圖呈現(xiàn)還是有差別的褐荷。Matplotlib默認(rèn)情況下呈現(xiàn)出來的是個(gè)長(zhǎng)方形勾效。而Seaborn呈現(xiàn)的是個(gè)正方形,而且不僅顯示出了散點(diǎn)圖叛甫,還給了這兩個(gè)變量的分布情況葵第。

Matplotlib繪制:

image

Seaborn繪制:

image

擴(kuò)展閱讀:

數(shù)據(jù)可視化:掌握數(shù)據(jù)領(lǐng)域的萬金油技能

折線圖

折線圖可以用來表示數(shù)據(jù)隨著時(shí)間變化的趨勢(shì)。

在Matplotlib中合溺,我們可以直接使用plt.plot()函數(shù)卒密,當(dāng)然需要提前把數(shù)據(jù)按照X軸的大小進(jìn)行排序,要不畫出來的折線圖就無法按照X軸遞增的順序展示棠赛。

在Seaborn中哮奇,我們使用sns.lineplot (x, y, data=None)函數(shù)。其中x睛约、y是data中的下標(biāo)鼎俘。data就是我們要傳入的數(shù)據(jù),一般是DataFrame類型辩涝。

這里我們?cè)O(shè)置了x贸伐、y的數(shù)組。x數(shù)組代表時(shí)間(年)怔揩,y數(shù)組我們隨便設(shè)置幾個(gè)取值捉邢。下面是詳細(xì)的代碼。

image

然后我們分別用Matplotlib和Seaborn進(jìn)行畫圖商膊,可以得到下面的圖示伏伐。你可以看出這兩個(gè)圖示的結(jié)果是完全一樣的,只是在seaborn中標(biāo)記了x和y軸的含義晕拆。

image
image

直方圖

直方圖是比較常見的視圖藐翎,它是把橫坐標(biāo)等分成了一定數(shù)量的小區(qū)間,這個(gè)小區(qū)間也叫作“箱子”实幕,然后在每個(gè)“箱子”內(nèi)用矩形條(bars)展示該箱子的箱子數(shù)(也就是y值)吝镣,這樣就完成了對(duì)數(shù)據(jù)集的直方圖分布的可視化。

在Matplotlib中昆庇,我們使用plt.hist(x, bins=10)函數(shù)末贾,其中參數(shù)x是一維數(shù)組,bins代表直方圖中的箱子數(shù)量凰锡,默認(rèn)是10未舟。

在Seaborn中圈暗,我們使用sns.distplot(x, bins=10, kde=True)函數(shù)掂为。其中參數(shù)x是一維數(shù)組裕膀,bins代表直方圖中的箱子數(shù)量,kde代表顯示核密度估計(jì)勇哗,默認(rèn)是True昼扛,我們也可以把kde設(shè)置為False,不進(jìn)行顯示欲诺。核密度估計(jì)是通過核函數(shù)幫我們來估計(jì)概率密度的方法抄谐。

這是一段繪制直方圖的代碼。

image

我們創(chuàng)建一個(gè)隨機(jī)的一維數(shù)組扰法,然后分別用Matplotlib和Seaborn進(jìn)行直方圖的顯示蛹含,結(jié)果如下,你可以看出塞颁,沒有任何差別浦箱,其中最后一張圖就是kde默認(rèn)為Ture時(shí)的顯示情況。

image
image
image

熱力圖

熱力圖祠锣,英文叫heat map酷窥,是一種矩陣表示方法,其中矩陣中的元素值用顏色來代表伴网,不同的顏色代表不同大小的值蓬推。通過顏色就能直觀地知道某個(gè)位置上數(shù)值的大小。另外你也可以將這個(gè)位置上的顏色澡腾,與數(shù)據(jù)集中的其他位置顏色進(jìn)行比較沸伏。

熱力圖是一種非常直觀的多元變量分析方法。

我們一般使用Seaborn中的sns.heatmap(data)函數(shù)动分,其中data代表需要繪制的熱力圖數(shù)據(jù)馋评。

這里我們使用Seaborn中自帶的數(shù)據(jù)集flights,該數(shù)據(jù)集記錄了1949年到1960年期間刺啦,每個(gè)月的航班乘客的數(shù)量留特。

image

通過seaborn的heatmap函數(shù),我們可以觀察到不同年份玛瘸,不同月份的乘客數(shù)量變化情況蜕青,其中顏色越淺的代表乘客數(shù)量越多,如下圖所示:

image

成對(duì)關(guān)系

如果想要探索數(shù)據(jù)集中的多個(gè)成對(duì)雙變量的分布糊渊,可以直接采用sns.pairplot()函數(shù)右核。它會(huì)同時(shí)展示出DataFrame中每對(duì)變量的關(guān)系,另外在對(duì)角線上渺绒,你能看到每個(gè)變量自身作為單變量的分布情況贺喝。它可以說是探索性分析中的常用函數(shù)菱鸥,可以很快幫我們理解變量對(duì)之間的關(guān)系。

pairplot函數(shù)的使用躏鱼,就好像我們對(duì)DataFrame使用describe()函數(shù)一樣方便氮采,是數(shù)據(jù)探索中的常用函數(shù)。

這里我們使用Seaborn中自帶的iris數(shù)據(jù)集染苛,這個(gè)數(shù)據(jù)集也叫鳶尾花數(shù)據(jù)集鹊漠。鳶尾花可以分成Setosa、Versicolour和Virginica三個(gè)品種茶行,在這個(gè)數(shù)據(jù)集中躯概,針對(duì)每一個(gè)品種,都有50個(gè)數(shù)據(jù)畔师,每個(gè)數(shù)據(jù)中包括了4個(gè)屬性娶靡,分別是花萼長(zhǎng)度、花萼寬度看锉、花瓣長(zhǎng)度和花瓣寬度姿锭。通過這些數(shù)據(jù),需要你來預(yù)測(cè)鳶尾花卉屬于三個(gè)品種中的哪一種度陆。

image

這里我們用seaborn中的pairplot函數(shù)來對(duì)數(shù)據(jù)集中的多個(gè)雙變量的關(guān)系進(jìn)行探索艾凯,如下圖所示。從圖上你能看出懂傀,一共有sepal_length趾诗、sepal_width、petal_length和petal_width4個(gè)變量蹬蚁,它們分別是花萼長(zhǎng)度恃泪、花萼寬度、花瓣長(zhǎng)度和花瓣寬度犀斋。

下面這張圖相當(dāng)于這4個(gè)變量?jī)蓛芍g的關(guān)系贝乎。比如矩陣中的第一張圖代表的就是花萼長(zhǎng)度自身的分布圖,它右側(cè)的這張圖代表的是花萼長(zhǎng)度與花萼寬度這兩個(gè)變量之間的關(guān)系叽粹。

image

關(guān)于本次Python可視化的學(xué)習(xí)览效,我希望你能掌握:

視圖的分類,以及可以從哪些維度對(duì)它們進(jìn)行分類虫几;

十種常見視圖的概念锤灿,以及如何在Python中進(jìn)行使用,都需要用到哪些函數(shù)辆脸;

需要自己動(dòng)手跑一遍案例中的代碼但校,體驗(yàn)下Python數(shù)據(jù)可視化的過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末啡氢,一起剝皮案震驚了整個(gè)濱河市状囱,隨后出現(xiàn)的幾起案子术裸,更是在濱河造成了極大的恐慌,老刑警劉巖亭枷,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袭艺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奶栖,警方通過查閱死者的電腦和手機(jī)匹表,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門门坷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宣鄙,“玉大人,你說我怎么就攤上這事默蚌《澄睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵绸吸,是天一觀的道長(zhǎng)鼻弧。 經(jīng)常有香客問我,道長(zhǎng)锦茁,這世上最難降的妖魔是什么攘轩? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮码俩,結(jié)果婚禮上度帮,老公的妹妹穿的比我還像新娘。我一直安慰自己稿存,他們只是感情好笨篷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓣履,像睡著了一般率翅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袖迎,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天冕臭,我揣著相機(jī)與錄音,去河邊找鬼燕锥。 笑死辜贵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脯宿。 我是一名探鬼主播念颈,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼连霉!你這毒婦竟也來了榴芳?” 一聲冷哼從身側(cè)響起嗡靡,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窟感,沒想到半個(gè)月后讨彼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柿祈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年哈误,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躏嚎。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜜自,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卢佣,到底是詐尸還是另有隱情重荠,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布虚茶,位于F島的核電站戈鲁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嘹叫。R本人自食惡果不足惜婆殿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罩扇。 院中可真熱鬧婆芦,春花似錦、人聲如沸暮蹂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仰泻。三九已至荆陆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間集侯,已是汗流浹背被啼。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棠枉,地道東北人浓体。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辈讶,于是被迫代替她去往敵國(guó)和親命浴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容