--- name: bi-distribution-analysis description: 分析观测数据在不同区间维度上的分布特征。触发条件:当任务强调数据分布特征分析时调用,如出现“数据分布”、“分布情况”等词时触发。 --- # bi-distribution-analysis 观察数据在不同区间的分布特征,计算均值、标准差、中位数等统计信息,用于刻画集中趋势与离散程度。 ## 执行步骤 ### Step 0:检查数据以及确定区间维度与计算指标 1. 明确分析对象:明确区间维度,以及相应具体数据列。例如,分析“不同国家用户数的分布情况”,区间维度为“国家”,具体数据列为“用户数”; 2. 数据以 CSV 格式保存,且数据中已包含区间维度信息以及关键数据列。如 ```csv date,访问用户数,国家 20250101,10000,英国 20250102,10500,法国 20250103,9800,德国 ``` ### Step 1:计算数据分布特征 对用于分析的数值序列 \(x_1,\ldots,x_n\),计算以下数据分布特征: | 指标 | 说明 | | ---------- | -------- | | **均值** | \(\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i\) | | **标准差** | \(\sigma = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_i-\bar{x})^2}\) | | **中位数** | 数值序列中位数 | | **top 5 的维度** | 数据值最大的 5 个维度 | | **top 5 维度各数值占比** | 数值最大的 5 个维度,每个维度对应数值占所有维度数值和的比例 | | **频率分布(按累计占比分桶)** | 将各维度按数值从大到小排序,逐项累计求和并除以总和得到累计占比 \(r\),按 \(r\) 落入以下 7 个桶:`<0.5`、`[0.5, 0.6)`、`[0.6, 0.7)`、`[0.7, 0.8)`、`[0.8, 0.9)`、`[0.9, 0.95)`、`>=0.95`。每个桶的值为该桶包含的维度名称列表 | 使用 `/scripts/distribution_stats.py` 脚本,计算上述 6 个数值分布特征(数值类指标计算结果保留小数点后 5 位)。 ```bash python /scripts/distribution_stats.py --input_file "<输入数据文件路径 (CSV)>" --value_col "<数值列名>" --dimension_col "<区间维度取值列>" ``` **参数说明**: | 参数 | 说明 | 默认值 | | ---------------- | -------------------- | ------- | | --input_file | 输入数据文件路径 (.csv) | (必填) | | --value_col | 区间各维度对应数值列名 | (必填) | | --dimension_col | 区间维度值列 | (必填) | ## fallback(指引模式) 无脚本环境时按以下计算方式手动计算,不可遗漏任何指标计算。 对用于分析的数值序列 \(x_1,\ldots,x_n\),计算以下数据分布特征: | 指标 | 计算方式 | | ---------- | -------- | | **均值** | \(\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i\) | | **标准差** | \(\sigma = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_i-\bar{x})^2}\) | | **中位数** | 1. 将数据进行从小到大排序;2. n 是奇数,中位数为第 \(\frac{n+1}{2}\) 个数;n 是偶数,中位数为第 \(\frac{n}{2}\) 位和第 \(\frac{n+1}{2}\) 为数的平均数 | | **top 5 的维度** | 数据最大的 5 个维度 | | **top 5 维度各数值占比** | 数值最大的 5 个维度,每个维度对应数值占所有维度数值和的比例 | | **频率分布(按累计占比分桶)** | 1. 将所有维度按数值 \(x_i\) 从大到小排序;2. 计算总和 \(S=\sum_i x_i\);3. 依次计算累计和 \(C_k=\sum_{i=1}^{k} x_i\) 与累计占比 \(r_k = C_k / S\);4. 按 \(r_k\) 将第 \(k\) 个维度名归入对应的桶:`<0.5`(\(r_k<0.5\))、`[0.5, 0.6)`、`[0.6, 0.7)`、`[0.7, 0.8)`、`[0.8, 0.9)`、`[0.9, 0.95)`、`>=0.95`(\(r_k \ge 0.95\));5. 输出为 dict,key 为桶名,value 为该桶包含的维度名称列表 | ## 输出要求 输出上述全部数值分布特征的计算结果,不要遗失任何计算结果,包括 NaN 值。`频率分布` 中即使某个桶没有任何维度,也需保留为空列表 `[]`。