0

0

计算人员在园区内累计停留总天数的高效 Pandas 方法

碧海醫心

碧海醫心

发布时间:2026-02-08 16:38:21

|

709人浏览过

|

来源于php中文网

原创

计算人员在园区内累计停留总天数的高效 Pandas 方法

本文介绍如何使用 pandas 快速计算每日在园人数及所有人累计停留天数,核心是通过 `entry - exit` 的差值累加得到每日在园人数,再对每日人数求和即得总人天数。

在人员进出管理、园区 occupancy 分析或资源调度场景中,常需统计“人×天”(person-days)这一关键指标——即所有人员在指定时段内停留的总天数。给定每日新增入场人数(entry_persons)与离场人数(exit_persons),我们需动态维护每日在园人数(即库存式累积),并最终求其时间序列之和。

关键逻辑在于:每日在园人数 = 前一日剩余人数 + 今日入场人数 − 今日离场人数。这本质上是一个带初始状态的累积差分过程,而 Pandas 的 cumsum() 正是为此类问题设计的高效工具

假设原始数据如下:

import pandas as pd

df = pd.DataFrame({
    'day': [1, 2, 3, 4, 5],
    'entry_persons': [4, 2, 3, 5, 0],
    'exit_persons': [0, 1, 4, 0, 1]
})

只需一行代码即可计算每日在园人数:

df['total_on_campus'] = (df['entry_persons'] - df['exit_persons']).cumsum()

执行后得到:

day entry_persons exit_persons total_on_campus
1 4 0 4
2 2 1 5
3 3 4 4
4 5 0 9
5 0 1 8

✅ 注意:cumsum() 默认从首行开始累加,天然契合“第1天无历史存量,直接为当日净流入”的业务前提(即初始园内人数为 0)。若实际存在期初存量(如第0天已有 N 人在园),可先在 DataFrame 首行插入一行 entry=N, exit=0,或直接将 cumsum() 结果加上初始值。

AimiAD
AimiAD

通过 AimiAD 让您的 AI 应用开始赚钱

下载

最终累计停留总天数(即所有人的停留天数之和)即为 total_on_campus 列的和:

total_person_days = df['total_on_campus'].sum()  # 输出:30

也可一步到位(无需中间列):

total_person_days = (df['entry_persons'] - df['exit_persons']).cumsum().sum()

⚠️ 注意事项:

  • 该方法隐含关键假设:所有离场者均来自此前在园人员(即不出现“负库存”)。若数据中存在某日 exit > 当前累计在园人数,cumsum 结果将为负,业务上不合理。建议增加校验:
    net_flow = df['entry_persons'] - df['exit_persons']
    if (net_flow.cumsum() < 0).any():
        raise ValueError("Detected invalid exit: more people exited than were ever present.")
  • 若需支持多园区、多分组统计,可结合 groupby(...).apply(lambda g: (g['entry'] - g['exit']).cumsum().sum()) 扩展。

综上,利用 (entry - exit).cumsum() 计算滚动在园人数,再调用 .sum() 汇总,是解决此类“累计人天”问题最简洁、向量化、符合 Pandas 设计哲学的标准解法。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

73

2025.12.04

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

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

3

2026.01.31

lambda表达式
lambda表达式

Lambda表达式是一种匿名函数的简洁表示方式,它可以在需要函数作为参数的地方使用,并提供了一种更简洁、更灵活的编码方式,其语法为“lambda 参数列表: 表达式”,参数列表是函数的参数,可以包含一个或多个参数,用逗号分隔,表达式是函数的执行体,用于定义函数的具体操作。本专题为大家提供lambda表达式相关的文章、下载、课程内容,供大家免费下载体验。

211

2023.09.15

python lambda函数
python lambda函数

本专题整合了python lambda函数用法详解,阅读专题下面的文章了解更多详细内容。

191

2025.11.08

Python lambda详解
Python lambda详解

本专题整合了Python lambda函数相关教程,阅读下面的文章了解更多详细内容。

58

2026.01.05

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

37

2026.02.06

java多线程方法汇总
java多线程方法汇总

本专题整合了java多线程面试题、实现函数、执行并发相关内容,阅读专题下面的文章了解更多详细内容。

17

2026.02.06

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

282

2026.02.06

快手网页版入口与电脑端使用指南 快手官方短视频观看入口
快手网页版入口与电脑端使用指南 快手官方短视频观看入口

本专题汇总了快手网页版的最新入口地址和电脑版使用方法,详细提供快手官网直接访问链接、网页端操作教程,以及如何无需下载安装直接观看短视频的方式,帮助用户轻松浏览和观看快手短视频内容。

149

2026.02.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 59.7万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

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

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