Pandas 中的散點矩陣

Preet Sanghavi 2024年2月15日
  1. Pandas 中的散點矩陣
  2. 在 Pandas 中使用 scatter_matrix() 方法
  3. 在 Pandas 中使用帶有 hist_kwds 引數的 scatter_matrix() 方法
  4. 在 Pandas 中使用帶有 diagonal = 'kde' 引數的 scatter_matrix() 方法
Pandas 中的散點矩陣

本教程探討在 Pandas 中使用散點矩陣來配對圖。

Pandas 中的散點矩陣

在資料預處理期間檢查用於分析迴歸的自變數之間的相關性非常重要。散點圖可以很容易地理解特徵之間的相關性。

Pandas 為分析師提供了 scatter_matrix() 函式以切實可行地實現這些繪圖。它還用於確定相關性是積極的還是消極的。

讓我們考慮一個 n 變數的例子; Pandas 中的這個函式將幫助我們擁有 n 行和 n 列,它們是 n x n 矩陣。

下面給出了實現散點圖的三個簡單步驟。

  1. 載入必要的庫。
  2. 匯入合適的資料。
  3. 使用 scatter_matrix 方法繪製圖形。

語法:

pandas.plotting.scatter_matrix(dataframe)

本教程將教我們如何有效地使用 scatter_matrix() 作為分析師。

注意
有很多引數可以與 scatter_matrix() 一起使用,例如 alphadiagonaldensity_kwdshist_kwdsrange_padding

在 Pandas 中使用 scatter_matrix() 方法

此示例使用 scatter_matrix() 方法,沒有附加引數。

在這裡,我們使用 numpy 模組建立虛擬資料。建立了三個變數:x1x2x3

import numpy as np
import pandas as pd

np.random.seed(134)
N = 1000

x1 = np.random.normal(0, 1, N)
x2 = x1 + np.random.normal(0, 3, N)
x3 = 2 * x1 - x2 + np.random.normal(0, 2, N)

使用字典建立 Pandas DataFrame:

df = pd.DataFrame({"x1": x1, "x2": x2, "x3": x3})
print(df.head())

輸出:

         x1        x2         x3
0 -0.224315 -8.840152  10.145993
1  1.337257  2.383882  -1.854636
2  0.882366  3.544989  -1.117054
3  0.295153 -3.844863   3.634823
4  0.780587 -0.465342   2.121288

最後,資料已準備好供我們繪製圖表。

import numpy as np
import pandas as pd
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt

np.random.seed(134)
N = 1000

x1 = np.random.normal(0, 1, N)
x2 = x1 + np.random.normal(0, 3, N)
x3 = 2 * x1 - x2 + np.random.normal(0, 2, N)

df = pd.DataFrame({"x1": x1, "x2": x2, "x3": x3})
df.head()

# Creating the scatter matrix:
pd.plotting.scatter_matrix(df)
plt.show()

分散矩陣樣本

正如我們所看到的,我們可以如此輕鬆地生成這些圖。但是,是什麼讓它如此有趣?

  1. 描繪了我們的虛擬資料中變數 x1x2x3 的分佈。
  2. 可以觀察到變數之間的相關性。

在 Pandas 中使用帶有 hist_kwds 引數的 scatter_matrix() 方法

下一個示例使用 hist_kwds 引數。我們可以使用此引數以 Python 字典的形式提供輸入,通過它我們可以更改直方圖的 bin 總數。

# Changing the number of bins of the scatter matrix in Python:
pd.plotting.scatter_matrix(df, hist_kwds={"bins": 30})

輸出:

hist kwds 引數

在 Pandas 中使用帶有 diagonal = 'kde' 引數的 scatter_matrix() 方法

在最後一個示例中,我們將用 kde 分佈替換直方圖。

KDE 代表核密度估計。它是一種可以平滑資料的基本工具,之後可以根據有限的資料樣本進行推斷。

使用 kde 繪製散點圖就像製作直方圖一樣簡單。為此,我們只需要將 hist_kwds 替換為 diagonal = 'kde'

diagonal 引數不能考慮兩個引數:histkde。確保在程式碼中使用其中任何一個非常重要。

獲取 kde 的程式碼更改如下。

# Scatter matrix with Pandas and density plots:
pd.plotting.scatter_matrix(df, diagonal="kde")

輸出:

kde 分佈

注意
我們還可以在現成的資料上繪製圖表,而不是使用虛擬資料。

我們只需要通過 read_csv 方法使用 Python Pandas 模組匯入 CSV 檔案。

csv_file = "URL for the dataset"

# Reading the CSV file from the URL
df_s = pd.read_csv(csv_file, index_col=0)

# Checking the data quickly (first 5 rows):
df_s.head()

與 Pandas 中的 scatter_matrix() 一樣,也可以使用可通過 seaborn 包使用的 pairplot 方法。

深入瞭解這些模組有助於繪製這些散點圖;它還佔了上風,使其更加使用者友好並建立更具吸引力的視覺化效果。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相關文章 - Pandas Plot