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

如何使用pandas计算DataFrame中角色属性稀有度并找出最稀有角色

实现步骤
  • 第一步:预处理数据(可选,避免属性值因为格式问题统计错误):统一去除所有字符串属性前后的空格、多余的标点符号
  • 第二步:按列统计每个属性值的出现频次,计算每个属性值对应的稀有度百分比:稀有度 = (总数据量 - 该属性出现次数) / 总数据量 * 100,出现次数越少,稀有度数值越高
  • 第三步:对每一行,将该行所有属性对应的稀有度百分比求平均值,作为该行角色的整体稀有度存入新列
  • 第四步:按稀有度列降序排序,第一条就是最稀有的角色
代码实现

首先导入依赖,示例数据可替换为你自己的数据集读取逻辑:

import pandas as pd

# 示例数据读取部分,实际使用时替换为你自己的读csv/excel代码即可
data = {
    'outfit': ['cyberpunk.', 'formal.', 'police.'],
    'face': ['angry.', 'smile', 'smile.'],
    'hat': ['none.', 'cowboy hat.', 'cop.'],
    'skin': ['purple.', 'normal.', 'dark.'],
    'background': ['black.', 'pink.', 'white.'],
    'weapon': ['sword', 'pistol', 'pepper spray']
}
df = pd.DataFrame(data)
n = len(df) # 获取总数据量

# 【可选预处理】统一去除所有字符串前后空格、末尾的英文句号,避免相同属性因为格式差异被统计为不同值
for col in df.columns:
    df[col] = df[col].str.strip().str.rstrip('.')

# 预计算每列所有属性值对应的稀有度映射表
col_rarity_map = {}
for col in df.columns:
    val_cnt = df[col].value_counts()
    col_rarity_map[col] = val_cnt.apply(lambda cnt: (n - cnt)/n * 100).to_dict()

# 计算每行的平均稀有度,存入新列
df['稀有度百分比'] = df.apply(
    lambda row: sum(col_rarity_map[col][row[col]] for col in df.columns) / len(df.columns),
    axis=1
)

# 提取最稀有角色(按稀有度降序排序的第一条)
rarest_char = df.sort_values('稀有度百分比', ascending=False).head(1)
print("最稀有角色信息:")
print(rarest_char)
补充说明
  • 新列稀有度百分比数值范围为0-100,数值越高代表角色越稀有
  • 如需保留指定小数位,可在计算平均稀有度时用round函数指定精度即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:18:03