在 Pandas 中繪製 Groupby 物件中每個分組的大小


Pandas 是一個強大的 Python 庫,主要用於資料分析。由於它包含大量且複雜難以理解的數值資料集,因此我們需要繪製這些資料集,以便輕鬆地視覺化給定資料集中存在的關係。Python 提供了多個庫,如 Matplotlib、Plotly 和 Seaborn,可以輕鬆地從給定資料中建立資訊豐富的圖表。在本文中,我們將展示如何在 Pandas 中繪製 Groupby 物件中每個分組的大小。

Python 程式用於繪製 Groupby 物件中每個分組的大小

為了繪製每個分組的大小,我們將使用下面提到的 Python 庫

  • Matplotlib

  • Seaborn

  • Plotly

讓我們透過示例程式討論它們在繪製 Pandas DataFrame 中每個分組的大小時的實際應用。

使用 Matplotlib

它是 Python 中最古老、使用最廣泛的繪相簿。它提供了一個低階介面,使我們能夠完全控制圖表的各個方面,例如軸、標籤、圖例、顏色、標記等等。我們還可以將其與其他庫(如 NumPy 和 Pandas)整合,以繪製來自各種來源的資料。

示例 1

以下示例說明了將 matplotlib 與 groupby 物件一起使用以繪製指定分組的大小的用法。

方法

  • 匯入 pandas 庫,引用名稱為 'pd',並從 matplotlib 庫匯入 pyplot 模組並將其重新命名為 plt。

  • 建立一個包含兩列“Group_name”和“Values”的字典資料。

  • 將此字典傳遞給 Pandas 的 DataFrame() 方法以建立一個名為 'df' 的 DataFrame。

  • 現在,使用 groupby() 方法按“Group_name”列對 DataFrame 進行分組。然後,我們呼叫 size() 方法來獲取每個分組的大小。生成的 groupby 物件將儲存在 'group_sizes' 中。

  • 透過指定 kind = 'bar' 來在 'group_sizes' 物件上呼叫 plot() 方法以建立條形圖。然後,使用一些內建方法設定 x 軸標籤、y 軸標籤和圖表標題。

  • 最後,我們呼叫 show() 方法顯示圖表。

import pandas as pd
import matplotlib.pyplot as plt
# Creating a user-defined DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
      'Values': [10, 12, 30, 14, 50, 16] }
df = pd.DataFrame(data)
# using groupby() method and getting the size
group_sizes = df.groupby('Group_name').size()
# to plot the size of group using Matplotlib
group_sizes.plot(kind='bar')
plt.xlabel('Group Name')
plt.ylabel('Sizes')
plt.title('Graph Showing Group Sizes')
plt.show()

輸出

使用 Seaborn

它建立在 Matplotlib 中的 pyplot 模組之上,提供了一個更高級別的介面,用於資料視覺化,具有更好的顏色調色盤和網格佈局。

示例 2

在以下示例中,我們將使用 seaborn 和 groupby 物件來繪製指定分組的大小。

方法

  • 分別使用引用名稱 pd 和 sns 匯入 pandas 和 seaborn 庫。

  • 與前面的程式碼類似,建立一個包含兩列“Group_name”和“Values”的字典資料。

  • 然後,將此字典傳遞給 Pandas 的 DataFrame() 方法以建立一個名為 'df' 的 DataFrame。

  • 使用 groupby() 方法,我們按“Group_name”列對 DataFrame 進行分組。然後,在此物件上呼叫 size() 方法以獲取每個分組的大小。在這裡,我們將使用一個名為“reset_index()”的附加方法將結果轉換為一個包含“Group_name”和“Size”列的 DataFrame。生成的 groupby 物件將儲存在 'group_sizes' 中。

  • 現在,使用 Seaborn 的內建方法 barplot() 建立條形圖。我們將 group_sizes DataFrame 作為 data 引數傳遞。我們將 x 軸列名指定為“Group_name”,y 軸列名指定為“Sizes”。

  • 然後,使用一些內建方法設定 x 軸標籤、y 軸標籤和圖表標題。

  • 最後,我們呼叫 show() 方法顯示圖表。

import pandas as pd
import seaborn as sns
# Creating a user-defined DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [1, 2, 3, 4, 5, 6] }
df = pd.DataFrame(data)
# using groupby() method and getting the size
group_sizes = df.groupby('Group_name').size().reset_index(name='Size')
# to plot the size of group using Seaborn
sns.barplot(data=group_sizes, x='Group_name', y='Size')
plt.xlabel('Group Name')
plt.ylabel('Sizes')
plt.title('Group Sizes')
plt.show() # to show the result

輸出

使用 Plotly

與前兩個庫相比,使用 Plotly 的優勢在於它的互動性,它允許我們放大、平移和更詳細地探索圖表。

示例 3

在此示例中,我們將修改前面示例中的程式碼,以使用 plotly 和 groupby() 繪製指定分組的大小。

import pandas as pd
import plotly.express as px
# Creating a user-defined DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# using groupby() method and getting the size
group_sizes = df.groupby('Group_name').size().reset_index(name = 'Sizes')
# to plot the size of group using Plotly
fig = px.bar(group_sizes, x = 'Group_name', y = 'Sizes', title = 'Group Sizes', width = 500, height = 350)
fig.show() # to show the result

輸出

在上面的程式碼中,我們使用了 Plotly Express 中的“bar()”方法建立條形圖。我們將 group_sizes DataFrame 作為第一個引數傳遞。我們將 x 軸列名指定為“Group_name”,y 軸列名指定為“Sizes”,圖表標題指定為“Group Sizes”。我們呼叫 fig.show() 來顯示圖表,而不是 plt.show()。

結論

在本文中,我們討論了三種繪製 Pandas DataFrame 的 groupby 物件中每個分組大小的方法。這三種方法分別是 matplotlib、seaborn 和 plotly。它們是最流行和使用最廣泛的繪相簿。

更新於: 2023-07-21

1K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.