Python Pandas技术问询:找出数据框中频率前三的姓名
使用Pandas找出DataFrame中出现频率前三的姓名
嘿,这有个简单高效的解决方案来搞定你的需求:
首先先还原你提供的示例DataFrame:
import pandas as pd # 构造你给出的示例数据 data = { 'Index': [1, 2, 3, 4, 5, 6, 7], 'Name': ['Jack', 'Jack', 'Tom', 'Tom', 'Lucy', 'Lily', 'Lily'] } df = pd.DataFrame(data)
接下来用几行代码就能得到你想要的结果:
# 统计姓名的出现频率,默认按频率降序排列 name_freq = df['Name'].value_counts() # 将统计结果转换为标准DataFrame格式,并修改列名匹配预期 top_three = name_freq.head(3).reset_index() top_three.columns = ['Name', 'Frequency'] # 输出最终结果 print(top_three)
运行后会得到和你预期完全一致的输出:
Name Frequency 0 Jack 2 1 Tom 2 2 Lily 2
简单拆解下关键步骤:
value_counts()是Pandas专门用来统计列值出现频率的工具,默认会自动按频率从高到低排序,省去了手动排序的麻烦。head(3)用来提取排名前三的记录,遇到像你例子里的并列情况时,它会自动包含所有进入前三梯队的条目。reset_index()把原本作为索引的姓名转成普通列,再通过columns属性修改列名,让结果格式完全贴合你的预期。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

