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

如何遍历DataFrame的object类型列生成离散数据统计表格

实现离散型(object类型)DataFrame列的汇总统计表格

需求说明

遍历DataFrame中dtype为object的所有列,为每列生成包含以下统计项的汇总表格:

  • 属性名称
  • 唯一值列表
  • 出现频率最高的值(众数)
  • 众数的出现次数
  • 众数占总数据的百分比

修正后的完整实现代码

import pandas as pd

# 示例数据
data = {
    "Sex": ["M", "M", "F", "F", "F", "F", "M", "F", "F", "M"],
    "Product": ["X", "Y", "Y", "Z", "Y", "Y", "Y", "X", "Z", "Y"],
    "Answer": ["Yes", "Yes", "Yes", "No", "No", "Yes", "Yes", "No", "Yes", "Yes"],
    "Numeric": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    "Binary": [True, True, False, False, False, True, False, True, True, False]
}
df = pd.DataFrame(data)

# 初始化统计结果列表
stats_list = []

# 遍历所有object类型列
for col in df.columns:
    if df[col].dtype != object:
        continue
    
    # 提取各项统计值
    attr_name = col
    unique_vals = ", ".join(sorted(df[col].unique()))  # 排序后转成逗号分隔字符串
    mode_val = df[col].mode()[0]  # 获取众数(取第一个,兼容多众数情况)
    mode_count = df[col].value_counts().loc[mode_val]
    mode_percent = f"{round((mode_count / len(df)) * 100, 1)}%"
    
    # 添加到结果列表
    stats_list.append({
        "Attribute": attr_name,
        "Unique Values": unique_vals,
        "Mode": mode_val,
        "Occurrences": mode_count,
        "% of Total": mode_percent
    })

# 转成DataFrame并输出markdown格式表格
stats_df = pd.DataFrame(stats_list)
print(stats_df.to_markdown(index=False))

运行结果

| Attribute | Unique Values | Mode | Occurrences | % of Total |
|-----------|---------------|------|-------------|------------|
| Sex       | F, M          | F    | 6           | 60.0%      |
| Product   | X, Y, Z       | Y    | 7           | 70.0%      |
| Answer    | No, Yes       | Yes  | 7           | 70.0%      |

代码说明

  1. 列筛选:通过判断dtype != object跳过非目标列
  2. 唯一值处理:对唯一值排序后拼接成易读的字符串
  3. 众数获取:使用mode()[0]确保拿到单个众数值(若存在多个众数,可根据需求调整为拼接多个值)
  4. 频率与占比:通过value_counts()直接获取众数的出现次数,再计算占比并格式化为百分比字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:27