如何使用Seaborn按一個或多個列對資料進行分組?


Seaborn主要是一個數據視覺化庫,它不提供直接按一個或多個列對資料進行分組的方法。但是,Seaborn可以與pandas庫無縫協作,pandas是Python中一個強大的資料處理庫。我們可以使用pandas按一個或多個列對資料進行分組,然後使用Seaborn對分組後的資料進行視覺化。

透過結合pandas的資料處理能力(按一個或多個列對資料進行分組)和Seaborn的視覺化能力,我們可以從資料中獲得見解,並透過視覺化有效地傳達我們的發現。

以下是關於如何結合使用Seaborn和pandas按一個或多個列對資料進行分組的詳細說明。

匯入必要的庫

在按一個或多個列對資料進行分組之前,我們必須匯入所有必需的庫,例如seaborn和pandas。

import seaborn as sns
import pandas as pd

將資料載入到pandas DataFrame中

接下來,我們必須使用pandas庫中提供的read_csv()函式將資料集載入到python環境中。讓我們使用read_csv()函式載入Iris.csv檔案。

df = pd.read_csv("https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv")
df.head()

按一個或多個列對資料進行分組

Pandas提供`groupby()`函式,用於基於一個或多個列對資料進行分組。我們可以指定一個或多個列作為分組標準,然後對分組後的資料執行操作。

示例

在這個例子中,我們建立了一個`grouped_data`物件,它表示基於指定列/列的分組資料。此物件可用於對分組資料執行各種操作。這裡我們對單列和多列都應用了分組。

import seaborn as sns
import pandas as pd

df = pd.read_csv("https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv")
df.head()

# Group data by a single column
grouped_data = df.groupby(['variety'])
# Group data by multiple columns
grouped_data = df.groupby(['sepal.length', 'sepal.width'])
res = grouped_data.head()
print(res)

輸出

     sepal.length  sepal.width  petal.length  petal.width    variety
0             5.1          3.5           1.4          0.2     Setosa
1             4.9          3.0           1.4          0.2     Setosa
2             4.7          3.2           1.3          0.2     Setosa
3             4.6          3.1           1.5          0.2     Setosa
4             5.0          3.6           1.4          0.2     Setosa
..            ...          ...           ...          ...        ...
145           6.7          3.0           5.2          2.3  Virginica
146           6.3          2.5           5.0          1.9  Virginica
147           6.5          3.0           5.2          2.0  Virginica
148           6.2          3.4           5.4          2.3  Virginica
149           5.9          3.0           5.1          1.8  Virginica

[150 rows x 5 columns]

對分組後的資料執行操作

對資料進行分組後,我們可以對分組後的資料執行各種操作,例如計算彙總統計資料、應用聚合或轉換資料。

示例

在這個例子中,我們計算每個組中`sepal.length`的平均值,每個組中`sepal.width`和`petal.length`的總和,並應用自定義聚合函式來計算每個組中`petal.width`的範圍。

mean_values = grouped_data['sepal.length'].mean()
sum_values = grouped_data['sepal.width', 'petal.length'].sum()
custom_agg = grouped_data['petal.width'].agg(lambda x: x.max() - x.min())

使用Seaborn視覺化分組後的資料

對分組後的資料執行操作後,我們可以使用Seaborn對分組後的資料進行視覺化。Seaborn提供各種繪圖函式,這些函式接受pandas DataFrame作為輸入。

我們可以使用其他各種Seaborn繪圖函式來視覺化分組後的資料,例如箱線圖、小提琴圖、點圖等等。Seaborn提供了許多自定義選項來增強資料的視覺表示。

示例

在這個例子中,我們使用Seaborn的`barplot()`函式來建立每個組內平均值的條形圖。`x`引數表示組的鍵,`y`引數表示平均值。

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv")
# Group data by a single column
grouped_data = df.groupby(['variety'])
mean_values = grouped_data['sepal.length'].mean()
sum_values = grouped_data['sepal.width', 'petal.length'].sum()
custom_agg = grouped_data['petal.width'].agg(lambda x: x.max() - x.min())
#Create a bar plot of the mean values within each group
sns.barplot(x = custom_agg, y = mean_values)

plt.show()

輸出

注意

需要注意的是,Seaborn主要關注資料視覺化,對於更復雜的資料處理任務,我們可能需要依賴pandas或Python中其他資料處理庫提供的功能。

更新於:2023年8月2日

899 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告