如何筛选1985-2016年每年自杀人数Top3的国家?
筛选1985-2016年每年自杀人数Top3国家
你已经完成了关键的一步——计算每年每个国家的自杀总数,接下来可以通过以下两种方法筛选出每年的前3名:
方法一:使用nlargest分组筛选
先将分组求和的结果转换为DataFrame,再按年份分组,对每组应用nlargest获取自杀数最高的3个国家:
# 1. 先过滤1985-2016年的数据集 filtered_df = df[(df['year'] >= 1985) & (df['year'] <= 2016)] # 计算每年每个国家的自杀总数 suicide_year_country = filtered_df.groupby(['year', 'country'])['suicides_no'].sum().reset_index() # 2. 按年份分组,筛选每组前3 top3_per_year = suicide_year_country.groupby('year').apply(lambda g: g.nlargest(3, 'suicides_no')).reset_index(drop=True)
方法二:先排序再取每组前3
先按年份升序、自杀数降序排序,再按年份分组取前3条记录,这种方法在大数据集上效率更高:
# 1. 计算总数并排序 suicide_sorted = filtered_df.groupby(['year', 'country'])['suicides_no'].sum().reset_index() suicide_sorted = suicide_sorted.sort_values(['year', 'suicides_no'], ascending=[True, False]) # 2. 分组取前3 top3_per_year = suicide_sorted.groupby('year').head(3)
两种方法最终都会得到一个包含year、country、suicides_no列的DataFrame,其中每一行对应某一年自杀数排名前3的国家。
内容的提问来源于stack exchange,提问作者Divyajeet Singh
相关产品推荐
相关产品推荐

