描述时间序列 pandas 中的间隙

2024-04-11

我正在尝试编写一个函数,该函数采用连续的时间序列并返回一个数据结构,该数据结构描述数据中任何缺失的间隙(例如带有“开始”和“结束”列的 DF)。对于时间序列来说,这似乎是一个相当常见的问题,但是尽管使用了 groupby、diff 等,并进行了探索,但我还没有能够想出比下面更好的方法。

对我来说,优先考虑的是使用矢量化操作来保持效率。必须有一个使用矢量化操作的更明显的解决方案——不是吗?感谢各位的帮助。

import pandas as pd


def get_gaps(series):
    """
    @param series: a continuous time series of data with the index's freq set
    @return: a series where the index is the start of gaps, and the values are
         the ends
    """
    missing = series.isnull()
    different_from_last = missing.diff()

    # any row not missing while the last was is a gap end        
    gap_ends = series[~missing & different_from_last].index

    # count the start as different from the last
    different_from_last[0] = True

    # any row missing while the last wasn't is a gap start
    gap_starts = series[missing & different_from_last].index        

    # check and remedy if series ends with missing data
    if len(gap_starts) > len(gap_ends):
         gap_ends = gap_ends.append(series.index[-1:] + series.index.freq)

    return pd.Series(index=gap_starts, data=gap_ends)

根据记录,Pandas==0.13.1,Numpy==1.8.1,Python 2.7


这个问题可以转化为查找列表中的连续数字。找到该系列中所有为空的索引,如果(3,4,5,6)的运行都为空,则只需提取开始和结束(3,6)

import numpy as np
import pandas as pd
from operator import itemgetter
from itertools import groupby


# create an example 
data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17]
s = pd.series( data, index=data)
s = s.reindex(xrange(18))
print find_gap(s)  


def find_gap(s): 
    """ just treat it as a list
    """ 
    nullindex = np.where( s.isnull())[0]
    ranges = []
    for k, g in groupby(enumerate(nullindex), lambda (i,x):i-x):
        group = map(itemgetter(1), g)
        ranges.append((group[0], group[-1]))
    startgap, endgap = zip(* ranges) 
    return pd.series( endgap, index= startgap )

参考 :识别列表中的连续数字组 https://stackoverflow.com/questions/2154249/identify-groups-of-continuous-numbers-in-a-list

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

描述时间序列 pandas 中的间隙 的相关文章

  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 识别 pandas 数据框中各组之间的差异

    我有一个按日期和 ID 索引的 pandas 数据框 我想 识别日期之间增删的ID 将 ID 添加到另一个数据帧以及添加 删除的日期 date ID value 12 31 2010 13 0 124409 9 0 555959 1 0 7
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 我什么时候需要基础活动和基础片段?

    在我看到的很多示例中 所有活动和片段都从基本活动和基本片段扩展而来 2个问题 我应该什么时候使用它 里面应该放什么样的代码 通常 当我需要在所有活动 片段的一些生命周期回调中做一些工作时 我会使用基本活动 片段 例如 如果您使用牛油刀 ht
  • 如何将子元素附加到 React 元素

    我想用循环将 child 附加到我的主 div let mainContainer React createElement div className contexCon 像这样 for let i 0 i lt 3 i mainConta
  • 如何在 Django 管理表单中添加自定义操作按钮并发布信息

    我是姜戈新手 我正在使用 Django 管理 我怎样才能制作一个新按钮 靠近保存 并发布信息并在 python 脚本中使用它 我正在使用 Django 版本 2 管理员 py admin site register Router admin
  • 找不到具有以下功能的代理:grunt

    当我尝试在本地 TFS 2015 Update 1 上对构建进行排队时 收到以下错误消息 找不到具有以下功能的代理 grunt 我已经安装了NodeJS and grunt cli他们在path 即它们可以从任何位置在 cmd 中执行 我缺
  • 无法调用未定义的方法“then”

    为什么我收到 无法调用未定义的方法 then http plnkr co edit yWS6hRjmZZeZMJyVA0zy p preview http plnkr co edit yWS6hRjmZZeZMJyVA0zy p previ
  • 如何禁用 d3 对数刻度中的小刻度?

    我的实时 d3 对数刻度图如下所示 我只想显示主要刻度及其标签 10 2 10 1 10 0 10 1 10 2 but 不是小蜱虫 我希望日志 Y 轴看起来像这样 没有小刻度 我怎样才能做到这一点 EDIT 发布一些代码 svg d3 s
  • ViewState 与 ASP.NET MVC 相关吗?

    我正在学习 ASP NET MVC ASP NET 的许多概念 如身份验证 授权 会话状态 仍然适用于它 但从我所了解的情况来看 我不认为 ViewState 在 ASP NET 应用程序中仍然相关 但它就在那里 System Web Mv
  • Codeigniter - cookie 在 Internet Explorer 8 中不起作用

    此代码适用于除 Internet Explorer 8 之外的所有浏览器 this gt input gt set cookie array name gt test cookie value gt hello from cookie ex
  • T-SQL 和 WHERE LIKE %Parameter% 子句

    我试图编写一个使用 WHERE LIKE text 子句的语句 但当我尝试使用文本参数时 我没有收到结果 例如 这有效 SELECT Employee WHERE LastName LIKE ning 这将返回用户 Flenning Man
  • Json.Encode 在 CS 文件中工作,但在 CSHTML 中不起作用

    在我的 CS 文件中 我正在执行以下命令 它按预期工作 using System Web Helpers String json System Web Helpers Json Encode null 但是 在我的 CSHTML 文件中 我
  • 使用 jQuery 重新绑定 DOM 事件

    这纯粹是一个理论问题 所以我不是在寻找替代解决方案 有没有办法让默认处理程序执行类似的操作 var defaultHandler test click test unbind click test bind click defaultHan
  • PDFBox 中的 load() 和 parse() 方法可能存在错误?

    我尝试使用PDFBox http pdfbox apache org 定期 pdf文件并且工作正常 但是当我遇到损坏的 pdf 代码会 冻结 不抛出错误或其他东西 简单地说load or parse函数需要永远执行 Here is 损坏的文
  • Qt LGPL 许可例外? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用Qt Mfc 迁移框架 http doc trolltech com solutions qtwinmigrate index
  • 通过 Jenkins 上的 Java Web Start 启动从属代理时出现问题

    我们最近将 Jenkins 升级到了最新版本 从那时起 我一直无法通过 Java Web Start 通过命令行启动从站 每次我尝试启动它时 都会收到 无法启动应用程序 错误 在详细信息面板中 CouldNotLoadArgumentExc
  • 没有可执行 jar 的 Spring Boot 2 Gradle 插件

    如何配置 Spring Boot Gradle 插件 2 以禁用 Gradle Script Kotlin 中的 Boot 分发 我想要的发行版是一个程序集捆绑包 zip 其中包含 lib 文件夹中的所有依赖项 和 jar 我已启用 Jar
  • Python 日志记录:为什么 __init__ 被调用两次?

    我正在尝试将 python 日志记录与配置文件和自己的处理程序一起使用 这在某种程度上是有效的 真正让我困惑的是 init 被叫两次并且 del 被调用一次 当我删除整个配置文件内容并直接在代码中创建处理程序时 init 被调用一次并且 d
  • mysql 小数和tinyint 乘法精度

    在 mysql 5 1 中 我有一个包含两列的表 create table t1 price decimal 6 2 quantity tinyint 4 在我正在做的选择查询中 select sum price quantity from
  • UglifyJS 属性修改

    根据文档 UglifyJS 可以修改除提供的保留列表中的属性名称之外的所有属性名称 是否可以用其他方式做到这一点 这样只有提供的列表上的属性才会被破坏 如果是这样 我需要传递哪些选项uglify minify files 实现您正在寻找的白
  • 批量格式化文件日期YYYYMMDD

    我一直在处理批处理文件中的一些代码 用于评估两个文件日期 如果一个日期大于另一个日期 则会运行另一个 bat 文件 我想要做的是将两个日期格式化为 YYYYMMDD 以便我可以使用GTR 比 更棒 代码如下 但如果我使用它就可以工作 equ
  • 描述时间序列 pandas 中的间隙

    我正在尝试编写一个函数 该函数采用连续的时间序列并返回一个数据结构 该数据结构描述数据中任何缺失的间隙 例如带有 开始 和 结束 列的 DF 对于时间序列来说 这似乎是一个相当常见的问题 但是尽管使用了 groupby diff 等 并进行