資料視覺化是資料科學的重要組成部分。它幫助我們探索和理解資料。資料視覺化也是傳遞資訊和交付結果的重要工具。
由於資料視覺化的重要性,在資料科學的生態系統中有許多資料視覺化庫和框架。其中一個流行的是Seaborn,這是一個用於Python的統計資料視覺化庫。
我最喜歡Seaborn的是它巧妙的語法和易用性。它允許只用3個函式來建立普通的圖表。
Relplot:用於建立關係圖Displot:用於建立分佈圖Catplot:用於建立分類圖這3個函式提供了一個圖形級的介面,用於建立和定製不同型別的圖。我們將通過幾個示例來理解如何使用這些函式。
示例將基於一個超市資料集(www.kaggle/aungpyaeap/supermarket-sales)。我們首先匯入庫並讀取資料集。
import numpy as np import pandas as pd import seaborn as sns sns.set(style='darkgrid') df = pd.read_csv("/content/supermarket.csv", parse_dates=['date']) df.head()
Relplot
relplot函式用於建立關係圖,即線圖和散點圖。這些圖提供了變數之間關係的概述。
讓我們首先建立單位價格和總數列的散點圖。我們指定資料和列名。kind引數用於選擇繪圖型別。
sns.relplot(data=df, x='unit_price', y='total', kind='scatter')
這是一堆直線,因為總價格等於單位價格乘以數量,數量就是直線的斜率。
讓我們使用relplot函式建立一個線圖。我們可以畫出每天的總銷售額。第一步是按日期對銷售進行分組,然後計算總和。
df_sub = df[['total','date']].groupby('date').sum().reset_index() df_sub.head()
現在我們可以建立直線圖了。
sns.relplot(data=df_sub, x='date', y='total', kind='line', height=4, aspect=2)
我們使用height 和aspect引數來調整繪圖的大小。aspect引數設定寬高比。
Displot使用分佈函式建立分佈圖,從而使我們可以大致瞭解數值變數的分佈。 我們可以使用displot函式建立直方圖,kde圖,ecdf圖和rugplots。
直方圖將數值變數的取值範圍劃分為離散的容器,並計算每個容器中的資料點(即行)的數量。讓我們畫一個總銷售額的柱狀圖。
sns.displot(data=df, x='total', hue='gender', kind='hist', multiple='dodge', palette='Blues', height=4, aspect=1.4)
hue引數根據給定列中的不同值分隔行。我們已經將性別列傳遞給了hue引數,因此我們可以分別看到女性和男性的分佈。
多個引數決定了不同類別的欄如何顯示(“dodge”表示並排顯示)。當使用hue變數時,palette 引數用於選擇調色盤。
這些函式的一個優點是它們的引數基本上是相同的。例如,它們都使用hue、height和aspect 引數。它使學習語法更容易。
kde圖建立了給定變數(即列)的核密度估計值,因此我們得到機率分佈的估計值。我們可以透過將kind引數設定為“kde”來建立kde圖。
sns.displot(data=df, x='total', hue='gender', kind='kde', palette='cool', height=5, aspect=1.4)
Catplot使用catplot函式建立分類圖,如箱形圖、條形圖、帶狀圖、小提琴圖等。總共有8個不同的分類圖可以使用catplot函式生成。
箱形圖用中位數和四分位數表示變數的分佈。下面是每個產品線單價欄的箱形圖。
sns.catplot(data=df, x='prod_line', y='unit_price', kind='box', height=6, aspect=1.8, width=0.5)
“width”引數調整框的寬度。
以下是箱形圖的結構:
中位數是所有點都排序後的中間點。Q1(第一或下四分位數)是下半部分的中位數,Q3(第三或上四分位數)是上半部分的中位數。
我們還可以建立一個條形圖來檢查不同產品線的單價。與使用方框不同,條形圖用一個點表示每個資料點。因此,它就像數字和分類變數的散點圖。
讓我們為branch和total列建立一個條形圖。
sns.catplot(data=df, x='branch', y='total', kind='strip', height=5, aspect=1.3)
這些點的密度給了我們一個分佈的大致概念。似乎C分支在頂部區域有更多的資料點。我們可以透過檢查每個分行的平均總額來證實我們的想法。
df[['branch','total']].groupby('branch').mean() total branch -------------------- A 312.354029 B 319.872711 C 337.099726
C的平均值高於其他兩分行的平均值。
catplot功能下的另一種型別是小提琴圖。這是一種plto和kde的組合。因此,它提供了一個變數分佈的概述。
例如,我們可以為前面示例中的strip plot所使用的列建立小提琴圖。我們需要做的就是改變kind引數。
sns.catplot(data=df, x='branch', y='total', kind='violin', height=5, aspect=1.3)
C的小提琴的頂部比其他兩支略粗。
總結relplot、displot和catplot函式可以生成14個不同的圖,這些圖幾乎涵蓋了我們在資料分析和探索中通常使用的所有視覺化型別。
這些函式提供了一個標準的語法,這使得掌握它們非常容易。在大多數情況下,我們只需要更改kind引數的值。此外,自定義繪圖的引數也是相同的。
在某些情況下,我們需要使用不同型別的圖表。但是我們需要的大部分都在這三個函式的範圍內。