0

0

如何用 Pandas 按 -1000 分割数据并计算各段有效值的平均值

花韻仙語

花韻仙語

发布时间:2026-02-17 11:47:03

|

444人浏览过

|

来源于php中文网

原创

如何用 Pandas 按 -1000 分割数据并计算各段有效值的平均值

本文介绍如何利用 pandas 对含哨兵值(-1000)的传感器数据进行智能分组,识别每段有效测量区间,计算其多列均值并写入新列(如 e 列),同时支持“仅当所有列均为有效值时才参与计算”的严格模式。

本文介绍如何利用 pandas 对含哨兵值(-1000)的传感器数据进行智能分组,识别每段有效测量区间,计算其多列均值并写入新列(如 e 列),同时支持“仅当所有列均为有效值时才参与计算”的严格模式。

在工业传感器或嵌入式设备采集的数据中,常以固定哨兵值(如 -1000)表示待机/无效状态。真实测量数据则夹在这些哨兵块之间,且每段有效数据的行数不固定。目标是:将连续非 -1000 的行视为一个逻辑组,对每组内所有有效行的指定列(A–D)求均值,并将该均值填入该组首行对应的 E 列;若某行所在组不满足“全列有效”条件,则 E 留空。

核心思路:基于哨兵值构建分组标识

关键在于将原始数据按 -1000 哨兵行自然切分。我们选用列 A 作为主哨兵判断依据(因其在示例中始终为 -1000 或有效值),通过布尔掩码与累积和生成唯一组 ID:

import pandas as pd

# 构造示例数据(与问题一致)
data = {
    'A': [-1000, -1000, -1000, 1, 7, -1000, 3, 1, -1000, -1000],
    'B': [-1000, -1000, -1000, 2, 10, -1000, 5, 11, -1000, -1000],
    'C': [-1000, -1000, -1000, 3, 5, -1000, 9, 2, -1000, -1000],
    'D': [-1000, -1000, -1000, 4, 6, -1000, 9, 10, -1000, -1000]
}
df = pd.DataFrame(data)

# 步骤1:标记哨兵行(以A列为基准)
cond = df['A'] == -1000

# 步骤2:生成组ID —— 每遇到一个非哨兵行,组号+1;哨兵行继承前一组号或为0
grp = (~cond).cumsum()  # 更鲁棒:用 ~cond(非哨兵)累积,避免起始为0组歧义

# 步骤3:筛选出所有非哨兵行(即有效数据行)
valid_rows = df[~cond].copy()

# 步骤4:按组ID分组,对A-D列分别求均值,再对每组的列均值取行均值(即整体均值)
# 注意:此处 mean(axis=1) 是对每组内各列均值再平均,等价于「先拼接所有有效值,再全局平均」
group_means = valid_rows.groupby(grp)[['A', 'B', 'C', 'D']].mean().mean(axis=1)

# 步骤5:将结果映射回原DataFrame的'E'列(仅填入对应组的首行,其余留空)
df['E'] = None
for group_id, mean_val in group_means.items():
    first_idx = valid_rows[valid_rows.index.isin(df[~cond].index) & (grp == group_id)].index[0]
    df.loc[first_idx, 'E'] = round(mean_val, 2)

运行后,df['E'] 将在第3行(索引3)填入 4.75,第6行(索引6)填入 6.25,其余为 None,完全匹配期望输出。

笔启AI论文
笔启AI论文

专业高质量、低查重,免费论文大纲,在线AI生成原创论文,AI辅助生成论文的神器!

下载

进阶需求:仅当整行全为有效值时才参与计算

问题补充提到:“有时某列是正数而其他列为 -1000,能否只在所有列都为正数时才计入平均?”——这要求更严格的过滤逻辑:

# 定义有效行:A、B、C、D 四列全部 > 0(排除 -1000 和负值)
valid_mask = (df[['A','B','C','D']] > 0).all(axis=1)

# 重新构建组ID:仅基于有效行位置(跳过所有含-1000的行)
grp_strict = valid_mask.cumsum()

# 提取严格有效的行并分组求均值
strict_means = df[valid_mask].groupby(grp_strict)[['A','B','C','D']].mean().mean(axis=1)

# 写入E列:仅在严格有效行的首行写入
df['E'] = None
for gid, val in strict_means.items():
    first_valid_idx = df[valid_mask].groupby(grp_strict).apply(lambda x: x.index[0]).get(gid, None)
    if first_valid_idx is not None:
        df.loc[first_valid_idx, 'E'] = round(val, 2)

此方案确保 E 列的每个值都源自真正完整的测量记录,杜绝因单列异常导致的统计偏差。

注意事项与最佳实践

  • 哨兵列选择:若 A 列不稳定(如存在非 -1000 的待机值),建议改用 (df[['A','B','C','D']] == -1000).all(axis=1) 作为 cond,确保整行均为哨兵才切分。
  • 空组处理:groupby(...).mean() 遇到空组会返回 NaN,需用 .dropna() 清洗。
  • 性能优化:对百万级数据,避免多次 groupby;可一次性计算 df[valid_mask].assign(group_id=grp_strict) 后聚合。
  • 扩展性:若需写入多列(如 E, F 分别存均值、标准差),直接修改 agg({'A': 'mean', 'B': 'std'}) 即可。

掌握这一模式,即可灵活应对各类基于哨兵值的时序数据分段分析任务。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

75

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

4

2026.01.31

传感器故障解决方法
传感器故障解决方法

传感器故障排除指南:识别故障症状(如误读或错误代码)。检查电源和连接(确保连接牢固,无损坏)。校准传感器(遵循制造商说明)。诊断内部故障(目视检查、信号测试、环境影响评估)。更换传感器(选择相同规格,遵循安装说明)。验证修复(检查信号准确性,监测异常行为)。

481

2024.06.04

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

106

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

95

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

33

2025.12.30

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

315

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

126

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

44

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号