如何调整Matplotlib条形图以展示各部门平均薪资?
实现各部门平均薪资条形图的修改方案
你当前代码用value_counts()统计的是各部门员工数量,要改成展示平均薪资,只需把数据聚合逻辑换成按部门分组计算薪资均值,具体修改如下:
修改后的完整代码
import numpy as np import pandas as pd import matplotlib.pyplot as plt file_path = 'Employee_Salaries_-_2020.csv' salaries = pd.read_csv(file_path) # 关键修改:按部门分组计算基础薪资平均值,按薪资从高到低排序 avg_salary_by_dept = salaries.groupby('Department')['Base Pay'].mean().sort_values(ascending=False) depts = list(avg_salary_by_dept.index) avg_salaries = list(avg_salary_by_dept.values) f, ax = plt.subplots(figsize=(20,10)) width = 0.75 ind = np.arange(len(avg_salaries)) ax.barh(ind, avg_salaries, width, color="blue") ax.set_yticks(ind + width/2) ax.set_yticklabels(depts, minor=False) # 修改标注:显示格式化后的平均薪资(保留两位小数,带千分位) for i, v in enumerate(avg_salaries): ax.text(v + 500, i + .25, f'${v:,.2f}', color='blue', fontweight='bold') plt.title('各部门平均基础薪资') plt.xlabel('平均基础薪资') plt.ylabel('部门') plt.show()
关键修改点说明
- 替换
value_counts()为groupby('Department')['Base Pay'].mean():实现按部门聚合计算平均薪资,添加sort_values(ascending=False)让图表按薪资从高到低排列,更易读 - 文本标注改为货币格式:用
f'${v:,.2f}'让薪资显示为带千分位的美元格式,更直观 - 调整标题和坐标轴标签为中文,贴合需求
内容的提问来源于stack exchange,提问作者PPuig
相关产品推荐
相关产品推荐

