本文共 1524 字,大约阅读时间需要 5 分钟。
在Pandas中,创建堆叠条形图并根据特定类别进行分组是一项常见的数据可视化任务。要实现这一目标,首先需要对数据进行适当的组织和准备。
假设你有以下数据集,其中包含了性别(Gender)、职业(Profession)和薪资(Salary)等信息:
import pandas as pdimport matplotlib.pyplot as pltdata = { 'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'] * 2, 'Profession': ['Engineer', 'Doctor', 'Teacher', 'Artist', 'Engineer', 'Doctor', 'Teacher', 'Artist'] * 2, 'Salary': [50000, 60000, 70000, 80000, 90000, 100000] * 2}df = pd.DataFrame(data) 接下来,使用Pandas的groupby()方法对数据进行分组,按性别和职业分组,并将结果转换为适合堆叠条形图的结构。以下是具体操作:
grouped_data = df.groupby(['Gender', 'Profession']).sum().unstack()
最后,使用Matplotlib绘制堆叠条形图。以下是完整的代码示例:
import pandas as pdimport matplotlib.pyplot as pltdata = { 'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'] * 2, 'Profession': ['Engineer', 'Doctor', 'Teacher', 'Artist', 'Engineer', 'Doctor', 'Teacher', 'Artist'] * 2, 'Salary': [50000, 60000, 70000, 80000, 90000, 100000] * 2}df = pd.DataFrame(data)grouped_data = df.groupby(['Gender', 'Profession']).sum().unstack()grouped_data.plot(kind='bar', stacked=True)plt.title('Salary Distribution by Gender and Profession')plt.xlabel('Gender')plt.ylabel('Total Salary')plt.xticks(rotation=0)plt.legend(loc='upper right', bbox_to_anchor=(1, 1))plt.tight_layout()plt.show() groupby()按性别和职业分组,sum()计算每个组的总薪资,然后使用unstack()将分组结果转换为列索引,这样可以方便地进行堆叠条形图的绘制。plot()函数绘制堆叠条形图,设置标题、坐标轴标签和图例,确保图表清晰易读。这种方法可以有效地展示不同性别和职业之间的薪资分布差异,适用于需要多维度分析的场景。
转载地址:http://esvfk.baihongyu.com/