在 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() 方法显示图表。

Open Compiler
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+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告