數據可視化——多變量數據


當我們想將三個變量一起繪製時,需要考慮四種主要情況:

  • - 三個數值變量
  • - 兩個數值變量和一個類別變量
  • - 一個數字變量和兩個類別變量
  • - 三個類別變量

如果我們至少有兩個數字變量(如前兩種情況),則描述數據的一種常用方法是使用散點圖對兩個數字變量進行編碼,然後對這些點使用非位置編碼來傳達值在第三個變量上,無論是數字變量還是分類變量。 (您將在本課程的後面看到其他技術,這些技術也可以應用於其他兩種情況,即我們至少有兩個分類變量。)

三種主要的非位置編碼突出:形狀,大小和顏色。對於matplotlib和seaborn,顏色是這三種編碼中最容易應用第三個變量的顏色。顏色可用於編碼定性和定量數據,並具有用於不同用例的不同類型的調色板。由於可以廣泛使用顏色,因此關於顏色及其在matplotlib和seaborn中的用法的專門討論將推遲至本課程的下一頁。

通過形狀編碼

形狀是分類變量的良好編碼,對分類變量的每個級別使用一個形狀。不幸的是,沒有內置的方法可以在一次調用散點圖或regplot函數時自動分配不同的形狀。取而代之的是,我們需要編寫一個循環來多次調用繪圖函數,按分類級別隔離數據點,併為每個變量設置一個不同的“標記”自變量值。

<code>plt.figure(figsize = [5,5])

common_size = 2500

plt.scatter([0],[1], marker = 's', s = common_size)

plt.scatter([1],[1], marker = '^', s = common_size)

plt.scatter([0],[0], marker = 'o', s = common_size)

plt.scatter([1],[0], marker = 'X', s = common_size)

# a little bit of aesthetic cleaning

plt.xlim(-0.5,1.5)

plt.xticks([])

plt.ylim(-0.5,1.5)

plt.yticks([])/<code>


數據可視化——多變量數據


通過大小編碼

<code>plt.scatter(data = df, x = 'num_var1', y = 'num_var2', s = 'num_var3')

# dummy series for adding legend

sizes = [20, 35, 50]

base_color = sb.color_palette()[0]

legend_obj = []

for s in sizes:

    legend_obj.append(plt.scatter([], [], s = s, color = base_color))

plt.legend(legend_obj, sizes)/<code>


數據可視化——多變量數據


顏色編碼


數據可視化——多變量數據

<code>sb.palplot(sb.color_palette(n_colors=9))/<code>


數據可視化——多變量數據


<code>sb.palplot(sb.color_palette('viridis', 9))/<code>


數據可視化——多變量數據


<code>sb.palplot(sb.color_palette('vlag', 9))/<code>


數據可視化——多變量數據


Faceting in Two Directions


數據可視化——多變量數據

<code>pkm_stats = ['hp', 'attack', 'defense', 'speed', 'special-attack', 'special-defense']

g = sb.PairGrid(data = pokemon, vars=pkm_stats)

g.map(plt.scatter)/<code>


數據可視化——多變量數據

<code>sb.heatmap(pokemon[pkm_stats].corr(), cmap = 'rocket_r', annot = True, fmt = '.2f', vmin = 0)/<code>


數據可視化——多變量數據


特徵工程

特徵工程就是要創建一個新變量,其原始變量之間的總和,差額,乘積或比率可以更好地洞察您要回答的研究問題。

例如,如果您有一個提供犯罪事件計數的變量,而有一個提供人口總數的變量,那麼您可能希望通過將前者除以後者來設計一個新變量,從而得出事件發生率。這將解釋原始特徵之間的可能關係,在此地方,如果有更多的人,自然就會有更多發生犯罪的機會。如果我們查看原始計數而不是事件發生率,則可能冒險只看到有關人口規模的信息,而不是我們真正想要的信息。

進行特徵工程的另一種方法是使用cut函數將數字變量劃分為有序的bin。當我們將數字變量拆分為有序的bin時,它將打開它以提供更多可視化編碼。例如,我們可以按數值變量的箱進行面圖繪製,或者使用離散的顏色箱而不是連續的色標。這種離散化步驟可能會通過消除噪音來幫助講述故事,使讀者可以專注於數據的主要趨勢。當然,如果垃圾桶的間距不正確,垃圾桶也可能會誤導您-如果您希望在基於地圖的可視化環境中看到更深入的討論,請查看PolicyViz的這篇文章。


分享到:


相關文章: