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

Python实现按性别分组输出每组Top5热门姓名的代码求助

按性别分组获取Top5热门姓名的Python实现

没问题!我来帮你搞定按性别分组提取Top5热门姓名的需求,用Pandas就能轻松实现,下面是完整的可行代码,我会把每个步骤都讲清楚:

  • 第一步:导入必要的工具库
    我们用Pandas来处理数据分组和统计,先导入它:
import pandas as pd
  • 第二步:加载或准备你的数据集
    这里我先构造了一份示例数据,你可以直接替换成自己的真实数据(比如用pd.read_csv('你的数据文件.csv')读取本地文件):
# 构造示例数据,替换成你自己的数据集即可
data = {
    '性别': ['男', '男', '男', '女', '女', '女', '男', '女', '男', '女', '男', '女', '男', '男', '女'],
    '姓名': ['张伟', '李伟', '张伟', '王芳', '李娜', '王芳', '李伟', '李娜', '张伟', '王芳', '刘强', '李娜', '李伟', '张伟', '张敏']
}
df = pd.DataFrame(data)
  • 第三步:分组统计并提取每组Top5
    核心逻辑是按性别分组后,统计每个姓名的出现频次,再取每组的前5个:
# 按性别分组,统计姓名出现次数,提取每组Top5
top5_names = df.groupby('性别')['姓名'].apply(lambda x: x.value_counts().head(5)).reset_index()
# 重命名列名,让结果更易读
top5_names.columns = ['性别', '姓名', '出现次数']

# 打印结果
print(top5_names)

运行这段代码后,你会得到这样的结果:

性别  姓名  出现次数
0  男  张伟      4
1  男  李伟      3
2  男  刘强      1
3  女  王芳      3
4  女  李娜      3
5  女  张敏      1

额外提示:如果你的数据里存在同一个人(同一姓名+性别)被多次记录的情况,你可以先对数据去重,再统计(避免重复计数):

# 先去重,确保每个姓名+性别组合只统计一次
df_unique = df.drop_duplicates(subset=['姓名', '性别'])
top5_names = df_unique.groupby('性别')['姓名'].apply(lambda x: x.value_counts().head(5)).reset_index()
top5_names.columns = ['性别', '姓名', '出现次数']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:26:22