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

基于两列生成统计列:用Pandas按性别统计观影占比

按性别统计观影人群占比的Pandas实现

需求说明

基于包含ID、gender、seen字段的Pandas DataFrame,统计不同性别中看过电影的人群占比,或是观影人群中各性别的占比(两种场景对应不同统计逻辑)。

示例数据

import pandas as pd

d = {'ID': [1,2,3,4,5,6], 'gender': ['male', 'male','male','male','male','female'], 'seen': ['yes','yes','yes','yes','no','no']}
df = pd.DataFrame(data=d)

解决方案

场景1:统计每个性别中看过电影的人数占该性别总人数的比例

按gender分组,计算每组内seen='yes'的人数占比:

# 按性别分组,计算观影占比并保留1位小数
gender_seen_ratio = df.groupby('gender')['seen'].apply(lambda x: (x == 'yes').mean() * 100).round(1).reset_index(name='观影占比(%)')
print(gender_seen_ratio)

输出结果:

gender  观影占比(%)
0  female        0.0
1    male       80.0

场景2:统计观影人群中各性别的占比

若需求是统计所有看过电影的用户里,不同性别分别占比多少,先筛选出seen='yes'的用户再分组计算:

# 筛选看过电影的用户
seen_users = df[df['seen'] == 'yes']
# 统计各性别在观影人群中的占比,保留整数
gender_in_seen_ratio = seen_users.groupby('gender')['ID'].size().div(seen_users.shape[0]) * 100
gender_in_seen_ratio = gender_in_seen_ratio.round(0).reset_index(name='观影人群性别占比(%)')
print(gender_in_seen_ratio)

输出结果:

gender  观影人群性别占比(%)
0    male           100.0

原代码问题说明

你之前的代码按seen字段分组,统计的是整体用户中看过/没看过电影的占比,未按gender维度拆分。要实现按性别划分的统计,核心是调整分组键为gender,或是先筛选目标人群再按gender分组计算占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:09:21