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

Pandas如何获取DataFrame列唯一值及对应出现占比

获取DataFrame指定列唯一值及对应出现百分比的实现方案

你推测的方向是对的,直接用value_counts()方法即可实现需求,不需要额外写循环统计。

核心代码

value_counts()自带normalize参数,开启后会直接返回每个值的出现占比(取值范围0~1),乘100即可得到百分比数值:

# 基础用法:返回每个唯一值的占比
ratio_series = df["prices"].value_counts(normalize=True)

# 转成百分比格式
percent_series = df["prices"].value_counts(normalize=True) * 100

返回结果是一个Series结构:索引为列的所有唯一值,对应的值为该值的占比/百分比,默认按照出现频次从高到低排序。

常用扩展用法

  • 如果你需要结果的排列顺序和df.prices.unique()完全一致(即按值在列中第一次出现的顺序排列,而非按频次降序),加上sort=False参数即可:
    percent_series = df["prices"].value_counts(normalize=True, sort=False) * 100
    
  • 如果需要把列中的空值NaN也纳入统计(默认会自动忽略空值),加上dropna=False参数:
    percent_with_na = df["prices"].value_counts(normalize=True, dropna=False) * 100
    
  • 如果需要转成易读的字典、列表格式,直接调用对应转换方法:
    # 转成 {唯一值: 百分比} 的字典格式
    percent_dict = percent_series.to_dict()
    
    # 转成 [(唯一值, 百分比), ...] 的列表格式
    percent_list = list(percent_series.items())
    

结果示例

针对你举例的prices列,输出的百分比结果格式参考如下:

1030    14.29
1075    14.29
2010    14.29
3000    14.29
3050    14.29
4050    14.29
4550    14.28
Name: prices, dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:18:14