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
相关产品推荐
相关产品推荐

