当前位置: 首页 > 游戏攻略 > 时间序列数据的周期转换和数据聚合

时间序列数据的周期转换和数据聚合

来源:网络 作者:趣玩小编 发布时间:2024-04-30 18:47:28

时间序列数据在数据分析中经常遇到,为了更好地挖掘数据内部的信息,我们常常根据原始数据中的时间周期,将其转换成不同跨度的周期,然后再观察数据在新的周期上是否产生新的特性。

以下以模拟的K线数据为例,演示如何使用 pandas 进行周期转换。


其中各字段的含义: open (开盘价), close (收盘价), high (最高价), low (最低价), volumn (成交量)。

首先创建测试数据,下面创建一天的K线数据,数据的间隔为1分钟。

import pandas as pd
import numpy as np

# 创建时间序列的列,时间间隔1分钟
date_col = pd.date_range("2024-01-01", "2024-01-02", freq="1min")
data_len = len(date_col)

# 模拟的K线数据
df = pd.DataFrame(
    np.random.randint(1, 10, size=(data_len, 5)),
    columns=["open", "close", "high", "low", "volumn"],
)

df.insert(0, "begin_time", date_col)
df

如果有股票或者类似交易的朋友都知道,K线的时间间隔是不固定的,一般根据自己的买卖频率会查看不同时间间隔的K线。但是采集数据时,一般不会去采集各种时间间隔的K线,我们可以根据1分钟的K线,去转换其他不同时间间隔的K线。转换的方法,就是使用 pandas resample 函数。通过 resample 周期转换其实就是以一定的周期对数据进行 groupby ,所以, resample 也像 groupby 一样,需要对新周期中的数据进行聚合。

比如,下面的数据我们将1分钟的K线转换为5分钟的K线。

df.resample("5min", on="begin_time").agg({
    "open": "first",
    "close": "last",
    "high": "max",
    "low": "min",
    "volumn": "sum",
})

除了上面的5分钟的数据,通过 resample 还可以聚合15分钟的K线,1小时,4小时等各种时间间隔的K线。方法类似,这里不再一一赘述。

对于完整的数据,时间序列数据的分析过程中,周期转换是一个很常用的操作。但是,不是简单的用 resample 来转换就完事了,周期转换之后也会带来新的问题,比如由于转换形成的空值,这些空值是要直接丢弃?还是要插值?如果要插值的话,是用基准数据来填充?还是用平均值?用移动平均值?用中位数?等等来插值,这些都需要根据具体的分析场景和使用的分析算法来进一步讨论。本文主要介绍使用 resample 来转换数据,而关于插值方法的详细讨论将另文阐述。

相关攻略
热门推荐 更多 +
休闲益智 | 945.71MB
我的世界是一款风靡全球的3D第一人称沙盒...
9.6
角色扮演 | 878.96MB
最新版《汉家江湖》是一款以武侠为题材、以...
9.5
飞行射击 | 262.79MB
《荒野乱斗》是快节奏射击类多人对战游戏。...
9.5
飞行射击 | 102.9M
掌上飞车手游app是由腾讯特别为QQ飞车...
9.2
休闲益智 | 263.56MB
开心消消乐是一款轻松休闲的手游,也是一款...
9.6