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

Python中多Pandas DataFrame有序元素全局频率计算最佳实践

模型排序频率统计方案

核心需求

  • 针对1000个对应user1user1000的DataFrame(df1df1000),按指定指标(如MAE)对每个DataFrame的Models列排序
  • 统计所有排序后的模型列表的绝对出现次数(counts)和相对占比(freq(%)),按次数排序
  • 保留每个排序对应的用户标识

分步实现代码

1. 生成带用户标识的排序模型列表

先把所有DataFrame存入字典(方便按用户标识索引),遍历每个用户的DataFrame,按指定指标排序后提取模型名称,转成元组(列表不可哈希,无法作为统计键),同时记录用户ID:

import pandas as pd
from collections import Counter

# 假设已将所有df存入字典,键为user标识,值为对应DataFrame
user_dfs = {f'user{i}': globals()[f'df{i}'] for i in range(1, 1001)}

# 指定排序指标,比如MAE(越小越好,用ascending=True;若为R²则用ascending=False)
target_metric = 'MAE'
sorted_model_records = []

for user_id, df in user_dfs.items():
    sorted_df = df.sort_values(by=target_metric, ascending=True)
    sorted_models = tuple(sorted_df['Models'].tolist())
    sorted_model_records.append({'user_id': user_id, 'sorted_models': sorted_models})

# 转成DataFrame方便后续处理
records_df = pd.DataFrame(sorted_model_records)

2. 统计排序顺序的频率

用Counter统计元组的出现次数,再计算相对频率:

# 统计每个排序序列的绝对次数
sorted_counts = Counter(records_df['sorted_models'])

# 转成结果DataFrame
result_df = pd.DataFrame.from_dict(sorted_counts, orient='index', columns=['counts'])
result_df.index.name = 'sorted_model_sequence'

# 计算相对频率(占比)
total_records = len(records_df)
result_df['freq(%)'] = (result_df['counts'] / total_records) * 100

# 按绝对次数降序排序
result_df = result_df.sort_values(by='counts', ascending=False).reset_index()

# 关联对应用户标识
user_mapping = records_df.groupby('sorted_models')['user_id'].apply(list).reset_index()
final_result = pd.merge(result_df, user_mapping, on='sorted_models')

3. 输出结果

直接打印或保存为文件:

print(final_result)
# 保存为CSV文件
final_result.to_csv('model_sequence_frequency.csv', index=False)

TF-IDF方法的适用性分析

TF-IDF(通过sklearn.TfidfVectorizer)不适合解决这个问题,原因如下:

  • TF-IDF核心是统计单个元素(这里是单个模型)在序列中的词频与逆序列频率,关注的是单个元素的重要性,而非整个序列的顺序和完整性
  • 我们的需求是统计有序模型列表作为整体的出现频率,TF-IDF无法识别序列的顺序差异(比如["A","B"]和["B","A"]会被视为包含相同元素的序列,TF-IDF值一致,但实际是完全不同的排序)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:08