在熊猫中仅选择每隔一分钟有数据的日期范围

jbssm

我正在尝试处理CSV中看起来像这样的大熊猫中的一些数据:

2014.01.02,08:56,1.37549,1.37552,1.37549,1.37552,3
2014.01.02,09:00,1.37562,1.37562,1.37545,1.37545,21
2014.01.02,09:01,1.37545,1.37550,1.37542,1.37546,18
2014.01.02,09:02,1.37546,1.37550,1.37546,1.37546,15
2014.01.02,09:03,1.37546,1.37563,1.37546,1.37559,39
2014.01.02,09:04,1.37559,1.37562,1.37555,1.37561,37
2014.01.02,09:05,1.37561,1.37564,1.37558,1.37561,35
2014.01.02,09:06,1.37561,1.37566,1.37558,1.37563,38
2014.01.02,09:07,1.37563,1.37567,1.37561,1.37566,42
2014.01.02,09:08,1.37570,1.37571,1.37564,1.37566,25

我使用以下命令导入了它:

raw_data = pd.read_csv('raw_data.csv', engine='c', header=None, index_col=0, names=['date', 'time', 'open', 'high', 'low', 'close', 'volume'], parse_dates=[[0,1]])

但是现在我想从数据中提取一些随机(甚至连续)的样本,但仅提取那些我连续5分钟始终带有数据的样本。因此,例如,来自的数据2014.01.02,08:56存在间隙因此无法使用。但是来自的数据2014.01.02,09:00还可以,因为它在接下来的5分钟中始终具有连续数据。

关于如何有效实现此目标的任何建议?

Jianxun Li

这是一种方法,首先.asfreq('T')填充一些观测值NaNs,然后使用rolling_apply并计算最近或接下来的5个观测值是否没有NaNs

# populate NaNs at minutely freq
# ======================
df = raw_data.asfreq('T')
print(df)

                       open    high     low   close  volume
date_time                                                  
2014-01-02 08:56:00  1.3755  1.3755  1.3755  1.3755       3
2014-01-02 08:57:00     NaN     NaN     NaN     NaN     NaN
2014-01-02 08:58:00     NaN     NaN     NaN     NaN     NaN
2014-01-02 08:59:00     NaN     NaN     NaN     NaN     NaN
2014-01-02 09:00:00  1.3756  1.3756  1.3755  1.3755      21
2014-01-02 09:01:00  1.3755  1.3755  1.3754  1.3755      18
2014-01-02 09:02:00  1.3755  1.3755  1.3755  1.3755      15
2014-01-02 09:03:00  1.3755  1.3756  1.3755  1.3756      39
2014-01-02 09:04:00  1.3756  1.3756  1.3756  1.3756      37
2014-01-02 09:05:00  1.3756  1.3756  1.3756  1.3756      35
2014-01-02 09:06:00  1.3756  1.3757  1.3756  1.3756      38
2014-01-02 09:07:00  1.3756  1.3757  1.3756  1.3757      42
2014-01-02 09:08:00  1.3757  1.3757  1.3756  1.3757      25

consecutive_previous_5min = pd.rolling_apply(df['open'], 5, lambda g: np.isnan(g).any()) == 0
consecutive_previous_5min

date_time
2014-01-02 08:56:00    False
2014-01-02 08:57:00    False
2014-01-02 08:58:00    False
2014-01-02 08:59:00    False
2014-01-02 09:00:00    False
2014-01-02 09:01:00    False
2014-01-02 09:02:00    False
2014-01-02 09:03:00    False
2014-01-02 09:04:00     True
2014-01-02 09:05:00     True
2014-01-02 09:06:00     True
2014-01-02 09:07:00     True
2014-01-02 09:08:00     True
Freq: T, dtype: bool

# use the reverse trick to get the next 5 values
consecutive_next_5min = (pd.rolling_apply(df['open'][::-1], 5, lambda g: np.isnan(g).any()) == 0)[::-1]
consecutive_next_5min

date_time
2014-01-02 08:56:00    False
2014-01-02 08:57:00    False
2014-01-02 08:58:00    False
2014-01-02 08:59:00    False
2014-01-02 09:00:00     True
2014-01-02 09:01:00     True
2014-01-02 09:02:00     True
2014-01-02 09:03:00     True
2014-01-02 09:04:00     True
2014-01-02 09:05:00    False
2014-01-02 09:06:00    False
2014-01-02 09:07:00    False
2014-01-02 09:08:00    False
Freq: T, dtype: bool

# keep rows with either have recent 5 or next 5 elements non-null
df.loc[consecutive_next_5min | consecutive_previous_5min]

                       open    high     low   close  volume
date_time                                                  
2014-01-02 09:00:00  1.3756  1.3756  1.3755  1.3755      21
2014-01-02 09:01:00  1.3755  1.3755  1.3754  1.3755      18
2014-01-02 09:02:00  1.3755  1.3755  1.3755  1.3755      15
2014-01-02 09:03:00  1.3755  1.3756  1.3755  1.3756      39
2014-01-02 09:04:00  1.3756  1.3756  1.3756  1.3756      37
2014-01-02 09:05:00  1.3756  1.3756  1.3756  1.3756      35
2014-01-02 09:06:00  1.3756  1.3757  1.3756  1.3756      38
2014-01-02 09:07:00  1.3756  1.3757  1.3756  1.3757      42
2014-01-02 09:08:00  1.3757  1.3757  1.3756  1.3757      25

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python熊猫每天从熊猫数据框索引中删除第一分钟

来自分类Dev

我如何每隔一分钟在php中执行代码?

来自分类Dev

熊猫:时间序列数据:如何选择一个小时,一天或一分钟的行?

来自分类Dev

Highcharts tickinterval设置为一分钟仅显示一个日期

来自分类Dev

Highcharts tickinterval设置为一分钟仅显示一个日期

来自分类Dev

c#尽管有线程时间,但每隔一分钟运行一个线程

来自分类Dev

一分钟。字典中的值

来自分类Dev

从列表中获取最后一分钟的日期行

来自分类Dev

如何在XTS中索引一分钟的盘中数据?

来自分类Dev

使用H / 1每隔一分钟运行一次Jenkins作业

来自分类Dev

每隔一分钟通过Node.js发出一个请求

来自分类Dev

每隔一分钟执行一次功能android / kotlin

来自分类Dev

Nexus-5每隔一分钟触发一次守位

来自分类Dev

每隔一分钟运行一次JS函数

来自分类Dev

如何每隔一分钟从网络摄像头拍照?

来自分类Dev

如何知道每隔一分钟重新启动哪个服务

来自分类Dev

如何每隔一分钟将2加到当前值?

来自分类Dev

以一分钟为增量选择分钟平均

来自分类Dev

获得给定日期每一分钟的数组的最有效方法?

来自分类Dev

计算一天中每一分钟“活动”数据框中有多少行的最有效方法是什么?

来自分类Dev

(验证)在MVC Post中一分钟仅发布一条记录

来自分类Dev

熊猫多指标EWMA:在多天内比较同一分钟

来自分类Dev

为什么电子表格会导致 Excel 每隔一分钟停止响应?没有宏,手动计算

来自分类Dev

SSMS立即连接数据库,而C#中的SqlClient需要一分钟吗?

来自分类Dev

每隔2分钟执行一次cron作业,但第一个小时“ 0”的第一分钟“ 0”除外

来自分类Dev

每隔2分钟执行一次cron作业,但第一个小时“ 0”的第一分钟“ 0”除外

来自分类Dev

MySQL查询以选择前一分钟的记录

来自分类Dev

从最后一分钟开始活动(PHP)

来自分类Dev

给字符串加一分钟

Related 相关文章

  1. 1

    Python熊猫每天从熊猫数据框索引中删除第一分钟

  2. 2

    我如何每隔一分钟在php中执行代码?

  3. 3

    熊猫:时间序列数据:如何选择一个小时,一天或一分钟的行?

  4. 4

    Highcharts tickinterval设置为一分钟仅显示一个日期

  5. 5

    Highcharts tickinterval设置为一分钟仅显示一个日期

  6. 6

    c#尽管有线程时间,但每隔一分钟运行一个线程

  7. 7

    一分钟。字典中的值

  8. 8

    从列表中获取最后一分钟的日期行

  9. 9

    如何在XTS中索引一分钟的盘中数据?

  10. 10

    使用H / 1每隔一分钟运行一次Jenkins作业

  11. 11

    每隔一分钟通过Node.js发出一个请求

  12. 12

    每隔一分钟执行一次功能android / kotlin

  13. 13

    Nexus-5每隔一分钟触发一次守位

  14. 14

    每隔一分钟运行一次JS函数

  15. 15

    如何每隔一分钟从网络摄像头拍照?

  16. 16

    如何知道每隔一分钟重新启动哪个服务

  17. 17

    如何每隔一分钟将2加到当前值?

  18. 18

    以一分钟为增量选择分钟平均

  19. 19

    获得给定日期每一分钟的数组的最有效方法?

  20. 20

    计算一天中每一分钟“活动”数据框中有多少行的最有效方法是什么?

  21. 21

    (验证)在MVC Post中一分钟仅发布一条记录

  22. 22

    熊猫多指标EWMA:在多天内比较同一分钟

  23. 23

    为什么电子表格会导致 Excel 每隔一分钟停止响应?没有宏,手动计算

  24. 24

    SSMS立即连接数据库,而C#中的SqlClient需要一分钟吗?

  25. 25

    每隔2分钟执行一次cron作业,但第一个小时“ 0”的第一分钟“ 0”除外

  26. 26

    每隔2分钟执行一次cron作业,但第一个小时“ 0”的第一分钟“ 0”除外

  27. 27

    MySQL查询以选择前一分钟的记录

  28. 28

    从最后一分钟开始活动(PHP)

  29. 29

    给字符串加一分钟

热门标签

归档