You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Pandas DataFrame中有教育背景的受访者占比?

问题

我有一个大型Pandas DataFrame,数据示例如下:

import pandas as pd
  
# 初始化列表数据
data = {'interview_key':['00-60-62-69', '00-80-63-65', '00-81-80-59', '00-87-72-75'],
        'any_education':['YES', 'YES', 'NO', 'NAN']}
  
# 创建DataFrame
df = pd.DataFrame(data)

其中any_education列的YES代表有教育背景,NO代表无教育背景,NAN是字符串类型的缺失值。需要计算有教育背景的受访者占比(即该列中YES样本占总样本的比例)。

解决方案

方法1:直接统计计算

通过布尔索引统计YES的数量,再除以总样本数:

yes_count = (df['any_education'] == 'YES').sum()
yes_ratio = yes_count / df.shape[0]
print(yes_ratio)  # 输出:0.5

方法2:利用value_counts快速获取占比

使用value_counts的normalize=True参数直接返回各取值的占比,再提取YES对应的比例(若数据中无YES,get('YES', 0)可避免报错):

yes_ratio = df['any_education'].value_counts(normalize=True).get('YES', 0)
print(yes_ratio)  # 输出:0.5

特殊情况处理

如果数据中存在Pandas原生缺失值(如pd.NA/np.nan)而非字符串NAN,可以先过滤缺失值再计算:

# 过滤缺失值
valid_data = df['any_education'].dropna()
# 计算占比
yes_ratio = (valid_data == 'YES').sum() / len(valid_data)

内容的提问来源于stack exchange,提问作者LivingstoneM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:00:46