在 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。它们是最流行和使用最广泛的绘图库。