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

如何通过Pandas GroupBy和value_counts获取各区域Top N常见值

解决每个区域取Top N高频犯罪类型的问题

问题背景

你有如下的犯罪记录表格:

Area NameCode Description
N HollywoodVIOLATION OF RESTRAINING ORDER
N HollywoodCRIMINAL THREATS - NO WEAPON DISPLAYED
N HollywoodCRIMINAL THREATS - NO WEAPON DISPLAYED
N HollywoodASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT
SoutheastASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT
West ValleyCRIMINAL THREATS - NO WEAPON DISPLAYED
West ValleyCRIMINAL THREATS - NO WEAPON DISPLAYED
77th StreetRAPE, FORCIBLE
FoothillCRM AGNST CHLD (13 OR UNDER) (14-15 & SUSP 10 YRS OLDER)0060
N HollywoodVANDALISM - FELONY ($400 & OVER, ALL CHURCH VANDALISMS) 0114

你用df.groupby(['Area Name'])['Code Description'].value_counts()统计了每个区域各犯罪类型的频次,但直接追加.nlargest(3)只会返回全局频次最高的3项(单个区域的结果),而不是每个区域自己的Top N项。

解决方案

问题的核心是:value_counts()返回的是一个多级索引的Series(第一级是区域名,第二级是犯罪类型),直接用.nlargest(3)是对整个Series全局排序取前3,而不是按区域分组后每组取前N。

要实现每个区域单独取Top N高频项,你需要再嵌套一次groupby,对每个区域组应用取前N的操作。有两种简洁的方式:

方法1:使用apply + nlargest

# 取每个区域的Top 2高频项,可替换2为你需要的N值
df.groupby(['Area Name'])['Code Description'].value_counts()\
  .groupby(level=0)\
  .apply(lambda x: x.nlargest(2))

方法2:使用head(更高效)

因为value_counts()本身已经按频次降序排列了,所以直接用head(N)取每个组的前N项即可:

# 同样替换2为你需要的N值
df.groupby(['Area Name'])['Code Description'].value_counts()\
  .groupby(level=0)\
  .head(2)

示例结果

用你的数据运行上述代码(取Top2),会得到如下结果:

Area Name    Code Description                                  
N Hollywood  CRIMINAL THREATS - NO WEAPON DISPLAYED                 2
             ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT        1
West Valley  CRIMINAL THREATS - NO WEAPON DISPLAYED                 2
77th Street  RAPE, FORCIBLE                                        1
Foothill     CRM AGNST CHLD (13 OR UNDER) (14-15 & SUSP 10 YRS OLDER)0060    1
Southeast    ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT        1
Name: Code Description, dtype: int64

可以看到,每个区域的Top N项都被正确提取出来了,如果某个区域的犯罪类型不足N个,会显示所有已有的项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:06:50