在 Pandas 中绘制 Groupby 对象中每个组的大小

pythonserver side programmingpandas

Pandas 是一个功能强大的 Python 库,主要用于数据分析。由于它包含难以理解的大型复杂数字数据集,我们需要绘制这些数据集,以便轻松可视化给定数据集内的关系。Python 提供了多个库,例如 Matplotlib、Plotly 和 Seaborn,可轻松根据给定数据创建信息丰富的图表。在本文中,我们将展示如何在 Pandas 中绘制 Groupby 对象中每个组的大小。

用于绘制 Groupby 对象中每个组的大小的 Python 程序

要绘制每个组的大小,我们将使用下面提到的 Python 库:

  • Matplotlib

  • Seaborn

  • Plotly

让我们借助示例程序讨论它们在绘制 Pandas DataFrame 中每个组的大小方面的实际实现。

使用 Matplotlib

它是最古老、使用最广泛的 Python 绘图库。它提供了一个低级接口,让我们可以完全控制图形的各个方面,例如轴、标签、图例、颜色、标记等。我们还可以将其与其他库(如 NumPy 和 Pandas)集成,以绘制来自各种来源的数据。

示例 1

以下示例说明了如何使用 matplotlib 和 groupby 对象绘制指定组的大小。

方法

  • 从 matplotlib 库中导入引用名称为"pd"的 pandas 库和 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
# 创建用户定义的 DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
'Values': [10, 12, 30, 14, 50, 16] }
df = pd.DataFrame(data)
# 使用 groupby() 方法并获取大小
group_sizes = df.groupby('Group_name').size()
# 使用绘制组的大小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

在下面的例子中,我们将使用带有 groupby 对象的 seaborn 来绘制指定组的大小。

方法

  • 分别使用引用名称 pd 和 sns 导入 pandas 和 seaborn 库。

  • 与前面的代码类似,创建一个包含两列"Group_name"和"Values"的字典数据。

  • 然后,将此字典传递给 Pandas 的 DataFrame() 方法以创建一个名为"df"的 DataFrame。

  • 使用 groupby() 方法,我们按以下方式对 DataFrame 进行分组'Group_name' 列。然后,调用此对象上的 size() 方法获取每个组的大小。在这里,我们将使用一个名为 'reset_index()' 的附加方法将结果转换为具有 'Group_name' 和 'Size' 列的 DataFrame。生成的对象是一个 groupby 对象,将存储在 'group_sizes' 中。

  • 现在,使用 Seaborn 的内置方法 barplot() 创建条形图。我们将 group_sizes DataFrame 作为数据参数传递。我们将 x 轴列名称指定为"Group_name",将 y 轴列名称指定为"Sizes"。

  • 然后,使用一些内置方法设置 x 轴标签、y 轴标签和绘图标题。

  • 最后,我们调用 show() 方法来显示绘图。

import pandas as pd
import seaborn as sns
# 创建用户定义的 DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [1, 2, 3, 4, 5, 6] }
df = pd.DataFrame(data)
# 使用 groupby() 方法并获取大小
group_sizes = df.groupby('Group_name').size().reset_index(name='Size')
# 使用 Seaborn 绘制组的大小
sns.barplot(data=group_sizes, x='Group_name', y='Size')
plt.xlabel('Group Name')
plt.ylabel('Sizes')
plt.title('Group Sizes')
plt.show() # 显示结果

输出

使用 Plotly

与前两个库相比,使用 Plotly 的优势在于它的交互性,允许我们缩放、平移和探索图更详细地。

示例 3

在此示例中,我们将修改上一个示例中的代码,以使用 plotly 和 groupby() 绘制指定组的大小。

import pandas as pd
import plotly.express as px
# 创建用户定义的 DataFrame
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
    'Values': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 使用 groupby() 方法并获取大小
group_sizes = df.groupby('Group_name').size().reset_index(name = 'Sizes')
# 使用 Plotly 绘制组的大小
fig = px.bar(group_sizes, x = 'Group_name', y = 'Sizes', title = 'Group Sizes', width = 500, height = 350)
fig.show() # 显示结果

输出

在上面的代码中,我们使用了 Plotly Express 中的"bar()"方法来创建条形图。我们将 group_sizes DataFrame 作为第一个参数传递。我们将 x 轴列名称指定为"Group_name",将 y 轴列名称指定为"Sizes",并将图标题指定为"Group Sizes"。我们调用了 fig.show() 来显示图表,而不是 plt.show()。

结论

在本文中,我们讨论了三种方法来绘制 Pandas DataFrame 的 groupby 对象中每个组的大小。这三种方法是 matplotlib、seaborn 和 plotly。它们是最流行和广泛使用的绘图库。


相关文章