Python資料視覺化的10種技能

2021-09-17 04:26:48 字數 4077 閱讀 8000

內容來自:極客時間專欄《資料分析實戰45講》

如果你想要用python進行資料分析,就需要在專案初期開始進行探索性的資料分析,這樣方便你對資料有一定的了解。其中最直觀的就是採用資料視覺化技術,這樣,資料不僅一目了然,而且更容易被解讀。同樣在資料分析得到結果之後,我們還需要用到視覺化技術,把最終的結果呈現出來。

按照資料之間的關係,我們可以把視覺化檢視劃分為4類,它們分別是比較、聯絡、構成和分布。我來簡單介紹下這四種關係的特點:

同樣,按照變數的個數,我們可以把視覺化檢視劃分為單變數分析和多變數分析。

視覺化的檢視可以說是分門別類,多種多樣,今天我主要介紹常用的10種檢視,包括了散點圖、折線圖、直方圖、條形圖、箱線圖、餅圖、熱力圖、蜘蛛圖、二元變數分布、成對關係。

1.散點圖

散點圖的英文叫做scatter plot,它將兩個變數的值顯示在二維座標中,非常適合展示兩個變數之間的關係。當然,除了二維的散點圖,我們還有三維的散點圖。

我在上一講中給你簡單介紹了下matplotlib這個工具,在matplotlib中,我們經常會用到pyplot這個工具包,它包括了很多繪圖函式,類似matlab的繪圖框架。在使用前你需要進行引用:

在工具包引用後,畫散點圖,需要使用plt.scatter(x, y, marker=none)函式。x、y 是座標,marker代表了標記的符號。比如「x」、「\u0026gt;」或者「o」。選擇不同的marker,呈現出來的符號樣式也會不同,你可以自己試一下。

下面三張圖分別對應「x」「\u0026gt;」和「o」。

除了matplotlib外,你也可以使用seaborn進行散點圖的繪製。在使用seaborn前,也需要進行包引用:

在引用seaborn工具包之後,就可以使用seaborn工具包的函式了。如果想要做散點圖,可以直接使用sns.jointplot(x, y, data=none, kind=『scatter』)函式。其中x、y是data中的下標。data就是我們要傳入的資料,一般是dataframe型別。kind這類我們取scatter,代表散點的意思。當然kind還可以取其他值,這個我在後面的檢視中會講到,不同的kind代表不同的檢視繪製方式。

好了,讓我們來模擬下,假設我們的資料是隨機的1000個點。

我們執行一下這個**,就可以看到下面的檢視(第一張圖為matplotlib繪製的,第二張圖為seaborn繪製的)。其實你能看到matplotlib和seaborn的檢視呈現還是有差別的。matplotlib預設情況下呈現出來的是個長方形。而seaborn呈現的是個正方形,而且不僅顯示出了散點圖,還給了這兩個變數的分布情況。

matplotlib繪製:

seaborn繪製:

擴充套件閱讀:

(小手)資料視覺化:掌握資料領域的萬金油技能

2.折線圖

折線圖可以用來表示資料隨著時間變化的趨勢。

在matplotlib中,我們可以直接使用plt.plot()函式,當然需要提前把資料按照x軸的大小進行排序,要不畫出來的折線圖就無法按照x軸遞增的順序展示。

在seaborn中,我們使用sns.lineplot (x, y, data=none)函式。其中x、y是data中的下標。data就是我們要傳入的資料,一般是dataframe型別。

這裡我們設定了x、y的陣列。x陣列代表時間(年),y陣列我們隨便設定幾個取值。下面是詳細的**。

然後我們分別用matplotlib和seaborn進行畫圖,可以得到下面的圖示。你可以看出這兩個圖示的結果是完全一樣的,只是在seaborn中標記了x和y軸的含義。

3.直方圖

直方圖是比較常見的檢視,它是把橫座標等分成了一定數量的小區間,這個小區間也叫作「箱子」,然後在每個「箱子」內用矩形條(bars)展示該箱子的箱子數(也就是y值),這樣就完成了對資料集的直方圖分布的視覺化。

在matplotlib中,我們使用plt.hist(x, bins=10)函式,其中引數x是一維陣列,bins代表直方圖中的箱子數量,預設是10。

在seaborn中,我們使用sns.distplot(x, bins=10, kde=true)函式。其中引數x是一維陣列,bins代表直方圖中的箱子數量,kde代表顯示核密度估計,預設是true,我們也可以把kde設定為false,不進行顯示。核密度估計是通過核函式幫我們來估計概率密度的方法。

這是一段繪製直方圖的**。

我們建立乙個隨機的一維陣列,然後分別用matplotlib和seaborn進行直方圖的顯示,結果如下,你可以看出,沒有任何差別,其中最後一張圖就是kde預設為ture時的顯示情況。

4.熱力圖

熱力圖,英文叫heat map,是一種矩陣表示方法,其中矩陣中的元素值用顏色來代表,不同的顏色代表不同大小的值。通過顏色就能直觀地知道某個位置上數值的大小。另外你也可以將這個位置上的顏色,與資料集中的其他位置顏色進行比較。

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

我們一般使用seaborn中的sns.heatmap(data)函式,其中data代表需要繪製的熱力圖資料。

這裡我們使用seaborn中自帶的資料集flights,該資料集記錄了2023年到2023年期間,每個月的航班乘客的數量。

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

成對關係

如果想要探索資料集中的多個成對雙變數的分布,可以直接採用sns.pairplot()函式。它會同時展示出dataframe中每對變數的關係,另外在對角線上,你能看到每個變數自身作為單變數的分布情況。它可以說是探索性分析中的常用函式,可以很快幫我們理解變數對之間的關係。

pairplot函式的使用,就好像我們對dataframe使用describe()函式一樣方便,是資料探索中的常用函式。

這裡我們使用seaborn中自帶的iris資料集,這個資料集也叫鳶尾花資料集。鳶尾花可以分成setosa、versicolour和virginica三個品種,在這個資料集中,針對每乙個品種,都有50個資料,每個資料中包括了4個屬性,分別是花萼長度、花萼寬度、花瓣長度和花瓣寬度。通過這些資料,需要你來**鳶尾花卉屬於三個品種中的哪一種。

這裡我們用seaborn中的pairplot函式來對資料集中的多個雙變數的關係進行探索,如下圖所示。從圖上你能看出,一共有sepal_length、sepal_width、petal_length和petal_width4個變數,它們分別是花萼長度、花萼寬度、花瓣長度和花瓣寬度。

下面這張圖相當於這4個變數兩兩之間的關係。比如矩陣中的第一張圖代表的就是花萼長度自身的分布圖,它右側的這張圖代表的是花萼長度與花萼寬度這兩個變數之間的關係。

關於本次python視覺化的學習,我希望你能掌握:

戳我檢視\u0026gt;\u0026gt;\u0026gt;「另 5 種視覺化技能」

戳我測試\u0026gt;\u0026gt;\u0026gt;你的資料分析能力:

三道資料分析測試題:基礎+高階+場景

Python資料視覺化的10種技能

內容來自 極客時間專欄 資料分析實戰45講 如果你想要用python進行資料分析,就需要在專案初期開始進行探索性的資料分析,這樣方便你對資料有一定的了解。其中最直觀的就是採用資料視覺化技術,這樣,資料不僅一目了然,而且更容易被解讀。同樣在資料分析得到結果之後,我們還需要用到視覺化技術,把最終的結果呈...

Python資料視覺化的10種技能

內容來自 極客時間專欄 資料分析實戰45講 如果你想要用python進行資料分析,就需要在專案初期開始進行探索性的資料分析,這樣方便你對資料有一定的了解。其中最直觀的就是採用資料視覺化技術,這樣,資料不僅一目了然,而且更容易被解讀。同樣在資料分析得到結果之後,我們還需要用到視覺化技術,把最終的結果呈...

Python資料視覺化的10種技能

內容來自 極客時間專欄 資料分析實戰45講 如果你想要用python進行資料分析,就需要在專案初期開始進行探索性的資料分析,這樣方便你對資料有一定的了解。其中最直觀的就是採用資料視覺化技術,這樣,資料不僅一目了然,而且更容易被解讀。同樣在資料分析得到結果之後,我們還需要用到視覺化技術,把最終的結果呈...