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

如何计算各Block中CHN元素的占比(基于分组统计结果)

计算每个Block中CHN记录的占比

场景说明

原始CSV数据结构如下:

Block_Number Block_Type  Segment_Duration Speaker_ID
0                1      Pause              1.21        FUZ
1                1      Pause              1.09        FUZ
2                1       AICF              2.06        FAN
3                1       AICF              1.23        FUZ
4                1       AICF              1.58        FAN
...            ...        ...               ...        ...
1280            32      Pause              1.03        FUZ
1281            32      Pause              1.16        SIL
1282            32      Pause              2.18        OLN
1283            32        AMF              0.98        FAN
1284            32        AMF              1.78        FAN

已通过分组筛选得到Speaker_ID为CHN的记录统计结果:

Block_Number Block_Type Speaker_ID  Count
1              29        CIC        CHN     98
6               9       AICF        CHN     30
7              22        CIC        CHN     29
10             19        CIC        CHN     21
14             13       AICF        CHN     15
28             27        CIC        CHN      9
...            ...        ...      ...      ...   

需求:计算全部32个Block中,每个Block内CHN记录的占比(公式:CHN记录总数 / 该Block总记录数 * 100%)

实现步骤(基于Python pandas)

1. 计算每个Block的总记录数

从原始数据中统计每个Block的总条数:

import pandas as pd

# 读取原始CSV文件
df = pd.read_csv('你的数据文件名.csv')

# 按Block_Number分组,统计每个Block的总记录数
block_total = df.groupby('Block_Number').size().reset_index(name='Total_Count')

2. 汇总每个Block的CHN记录数

同一个Block可能包含不同Block_Type的CHN记录,需先将同一Block的CHN条数求和:

# 假设你已有的CHN统计数据存储在chn_df变量中
chn_block_sum = chn_df.groupby('Block_Number')['Count'].sum().reset_index(name='CHN_Count')

3. 合并数据并计算占比

将总记录数和CHN记录数合并,计算占比并格式化:

# 合并两个数据框,确保所有32个Block都被保留
result = pd.merge(block_total, chn_block_sum, on='Block_Number', how='left')

# 给没有CHN记录的Block填充0值
result['CHN_Count'] = result['CHN_Count'].fillna(0)

# 计算占比,保留两位小数并转为百分比格式
result['CHN_Percentage'] = (result['CHN_Count'] / result['Total_Count'] * 100).round(2).astype(str) + '%'

# 按Block序号排序,方便查看结果
result = result.sort_values('Block_Number').reset_index(drop=True)

最终结果示例

处理后的数据会包含四列,示例如下:

Block_Number  Total_Count  CHN_Count CHN_Percentage
0              1          150          0          0.00%
1              2           90         15         16.67%
...
28            29          120         98         81.67%
...
31            32           80          0          0.00%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:50:35