在 Pandas 中绘制 Groupby 对象中每个组的大小
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。它们是最流行和广泛使用的绘图库。