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

如何基于数值计算百分比并按区间分组统计非零值平均天数

数据处理实现方案

一、筛选非零数据并分组计算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)

  1. 加载并筛选数据:过滤掉Values为0的行
  2. 按指定区间分组:将Values分为1-30、31-60、≥90三个区间,用区间上限作为分组标签
  3. 计算每组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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:20:28