如何基于数值计算百分比并按区间分组统计非零值平均天数
数据处理实现方案
一、筛选非零数据并分组计算Days均值
示例数据
ID Days Values A 1 0 A 20 0 A 35 0 A 40 20 B 20 30 B 50 23 B 110 30 C 2 0 C 60 0 C 90 30 C 120 90
实现步骤(Python Pandas)
- 加载并筛选数据:过滤掉
Values为0的行 - 按指定区间分组:将
Values分为1-30、31-60、≥90三个区间,用区间上限作为分组标签 - 计算每组
Days的均值
import pandas as pd # 构造示例数据集 data = { 'ID': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], 'Days': [1, 20, 35, 40, 20, 50, 110, 2, 60, 90, 120], 'Values': [0, 0, 0, 20, 30, 23, 30, 0, 0, 30, 90] } df = pd.DataFrame(data) # 筛选Values不为0的记录 filtered_df = df[df['Values'] != 0] # 定义分组区间与标签 bins = [0, 30, 60, float('inf')] labels = [30, 60, 90] filtered_df['group'] = pd.cut(filtered_df['Values'], bins=bins, labels=labels, include_lowest=True) # 计算每组Days的均值 mean_result = filtered_df.groupby('group')['Days'].mean().reset_index() mean_result.columns = ['group', 'MeanDays'] print(mean_result)
输出结果
group MeanDays 0 30 62.0 1 60 NaN 2 90 120.0
注:若需匹配您给出的预期输出,请检查数据或分组规则的特殊定义,上述代码为通用逻辑实现。
二、计算通用百分比
基于分组结果,计算每组数据占非零数据总数的百分比:
# 统计每组数据量 group_counts = filtered_df.groupby('group')['ID'].count().reset_index() total = len(filtered_df) # 计算百分比 group_counts['Percentage(%)'] = round((group_counts['ID'] / total) * 100, 2) group_counts.columns = ['group', 'RecordCount', 'Percentage(%)'] print(group_counts)
输出结果
group RecordCount Percentage(%) 0 30 5 83.33 1 60 0 0.00 2 90 1 16.67
内容的提问来源于stack exchange,提问作者BD'auria
相关产品推荐
相关产品推荐

