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

如何对DataFrame某列的每个唯一值自动执行另一列的value_counts()?

解决方案

你可以通过以下几种高效方式批量实现需求,无需逐个筛选唯一值:

方法1:groupby 结合 value_counts

直接按目标列分组后,对target列应用统计方法,支持频数或百分比统计:

import pandas as pd

# 统计每个sepal length对应的target频数
result_counts = data.groupby('sepal length (cm)')['target'].agg(pd.Series.value_counts)

# 统计百分比(归一化后转成百分比格式)
result_percent = data.groupby('sepal length (cm)')['target'].agg(lambda x: x.value_counts(normalize=True)*100)

display(result_percent)

方法2:透视表(pivot_table)

如果需要规整的表格形式,把target的不同取值作为列展示:

# 生成频数透视表
pivot_counts = pd.pivot_table(data, 
                              index='sepal length (cm)', 
                              columns='target', 
                              aggfunc='size', 
                              fill_value=0)

# 生成百分比透视表(按行归一化)
pivot_percent = pivot_counts.apply(lambda x: x/x.sum()*100, axis=1)

display(pivot_percent)

方法3:交叉表(crosstab)

用pd.crosstab直接生成列联表,适合快速查看分布:

# 生成频数交叉表
cross_counts = pd.crosstab(data['sepal length (cm)'], data['target'])

# 生成百分比交叉表(按行归一化)
cross_percent = pd.crosstab(data['sepal length (cm)'], data['target'], normalize='index')*100

display(cross_percent)

以上三种方法都会自动遍历sepal length (cm)的所有唯一值,一次性输出所有对应的target分布结果,比逐个筛选的方式高效得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:30:55