CSV数据处理:按性别统计录用占比及DataFrame筛选修改问题
计算男女录用/未录用百分比的实现方法
要实现你的统计需求,你可以把原筛选代码里的Salary、Age、JOB条件替换成Gender和Status的组合条件,再通过计数和总人数的比值计算百分比。以下是两种具体实现方式:
方法一:分步筛选计算
先分别筛选出四个分组的记录,再计算每组占总人数的百分比:
# 筛选对应分组的记录 male_offered = dataFrame.loc[(dataFrame['Gender'] == 'M') & (dataFrame['Status'] == 'Offered')] male_not_offered = dataFrame.loc[(dataFrame['Gender'] == 'M') & (dataFrame['Status'] == 'Not offered')] female_offered = dataFrame.loc[(dataFrame['Gender'] == 'F') & (dataFrame['Status'] == 'Offered')] female_not_offered = dataFrame.loc[(dataFrame['Gender'] == 'F') & (dataFrame['Status'] == 'Not offered')] # 计算总人数 total_count = len(dataFrame) # 计算各分组百分比(保留两位小数) male_offered_pct = round((len(male_offered) / total_count) * 100, 2) male_not_offered_pct = round((len(male_not_offered) / total_count) * 100, 2) female_offered_pct = round((len(female_offered) / total_count) * 100, 2) female_not_offered_pct = round((len(female_not_offered) / total_count) * 100, 2) # 输出结果 print(f"男性被录用: {male_offered_pct}%") print(f"男性未被录用: {male_not_offered_pct}%") print(f"女性被录用: {female_offered_pct}%") print(f"女性未被录用: {female_not_offered_pct}%")
方法二:用groupby高效统计
如果不想多次重复筛选,可以用pandas的groupby方法一次性完成分组计数和百分比计算,代码更简洁:
# 按性别和录用状态分组,统计每组数量 grouped_stats = dataFrame.groupby(['Gender', 'Status']).size().reset_index(name='count') # 计算总人数 total_count = len(dataFrame) # 添加百分比列 grouped_stats['percentage(%)'] = round((grouped_stats['count'] / total_count) * 100, 2) # 展示结果 display(grouped_stats)
关键说明
原代码里的(dataFrame['Salary']>=100000) & (dataFrame['Age']< 40) & ...是多条件逻辑与筛选,现在替换成(dataFrame['Gender'] == 'M') & (dataFrame['Status'] == 'Offered')这类条件,就能精准定位到你需要统计的分组。
内容的提问来源于stack exchange,提问作者alphaTango
相关产品推荐
相关产品推荐

