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

如何在pandas中删除列值占总csv数据集比例低于x%的行

按列值占比过滤数据集实现方案

需求说明

我们需要删除指定列取值占总数据集比例低于x%的行,避免使用pyplot做可视化时X轴标签过多导致重叠,过滤掉低占比的非重要数据,可参考的数据集示例如下:

namehobby
jakedrawing
sofiacoding
johndrawing
henrycoding
susandancing
tonycoding
harrydrawing
petercoding
anniecoding
dannybadminton

上述示例数据中drawing占比30%、coding占比50%,dancing和badminton占比均低于20%,即可直接过滤掉这两个取值对应的行。

具体实现(Python + Pandas环境)

实现逻辑

  • 先统计指定列每个取值的占比
  • 筛选出占比≥阈值x%的取值列表
  • 仅保留数据集里该列取值在筛选列表中的行

可直接复用的代码

import pandas as pd

# 1. 读取你的数据集,以下为示例构造代码可替换为自己的读表逻辑
df = pd.DataFrame({
    'name': ['jake', 'sofia', 'john', 'henry', 'susan', 'tony', 'harry', 'peter', 'annie', 'danny'],
    'hobby': ['drawing', 'coding', 'drawing', 'coding', 'dancing', 'coding', 'drawing', 'coding', 'coding', 'badminton']
})

# 2. 自定义过滤参数
filter_col = 'hobby' # 替换为你要统计占比的列名
threshold_pct = 20 # *可按需调整阈值,单位为%,低于该值的取值对应行都会被删除*

# 3. 计算列取值占比,筛选要保留的取值
val_pct = df[filter_col].value_counts(normalize=True) * 100
keep_vals = val_pct[val_pct >= threshold_pct].index.tolist()

# 4. 过滤得到最终数据集
filtered_df = df[df[filter_col].isin(keep_vals)]

# 输出验证结果
print(filtered_df)

运行结果

以上代码运行后会自动过滤掉hobby为dancing、badminton的行,得到的结果如下:

namehobby
jakedrawing
sofiacoding
johndrawing
henrycoding
tonycoding
harrydrawing
petercoding
anniecoding

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:57:04