如何按条件求和生成新DataFrame并计算企业非白人员工占比?
问题解答
你的分组统计方法是否有误?
你使用的e2 = df_ethnicities.groupby(["Company", "Ethnicity"]).agg({"Count": sum}).reset_index()完全没问题,这段代码能准确按「企业+种族」维度汇总员工总数,是后续计算的合理基础。
后续操作步骤
按以下流程即可生成包含企业名称和非白人员工占比的目标DataFrame:
统计各企业总员工数
基于e2按企业分组,汇总所有种族的员工数:total_staff = e2.groupby("Company")["Count"].sum().reset_index(name="Total_Employees")统计各企业非白人员工总数
筛选出非白人员工记录后按企业汇总:non_white_staff = e2[e2["Ethnicity"] != "White"].groupby("Company")["Count"].sum().reset_index(name="Non_White_Count")合并数据并计算占比
合并总人数与非白人员数,计算占比(处理可能全是白人的企业,填充0值):import pandas as pd final_df = pd.merge(total_staff, non_white_staff, on="Company", how="left") final_df["Non_White_Count"] = final_df["Non_White_Count"].fillna(0) final_df["Non_White_Ratio"] = (final_df["Non_White_Count"] / final_df["Total_Employees"]) * 100 # 保留需要的列 final_df = final_df[["Company", "Non_White_Ratio"]]绘制柱状图
用matplotlib快速生成柱状图示例:import matplotlib.pyplot as plt plt.bar(final_df["Company"], final_df["Non_White_Ratio"]) plt.xlabel("企业名称") plt.ylabel("非白人员工占比(%)") plt.title("各企业非白人员工占比") plt.xticks(rotation=45) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者efohipx
相关产品推荐
相关产品推荐

