最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何使用pandas進(jìn)行時(shí)間序列數(shù)據(jù)的周期轉(zhuǎn)換

 更新時(shí)間:2024年05月01日 07:45:13   作者:databook  
時(shí)間序列數(shù)據(jù)是數(shù)據(jù)分析中經(jīng)常遇到的類型,為了更多的挖掘出數(shù)據(jù)內(nèi)部的信息,我們常常依據(jù)原始數(shù)據(jù)中的時(shí)間周期,將其轉(zhuǎn)換成不同跨度的周期,下面以模擬的K線數(shù)據(jù)為例,演示如何使用pandas來(lái)進(jìn)行周期轉(zhuǎn)換,感興趣的朋友可以參考下

時(shí)間序列數(shù)據(jù)是數(shù)據(jù)分析中經(jīng)常遇到的類型,為了更多的挖掘出數(shù)據(jù)內(nèi)部的信息,我們常常依據(jù)原始數(shù)據(jù)中的時(shí)間周期,將其轉(zhuǎn)換成不同跨度的周期,然后再看數(shù)據(jù)是否會(huì)在新的周期上產(chǎn)生新的特性。

下面以模擬的K線數(shù)據(jù)為例,演示如何使用pandas來(lái)進(jìn)行周期轉(zhuǎn)換。

1. 創(chuàng)建測(cè)試數(shù)據(jù)

首先創(chuàng)建測(cè)試數(shù)據(jù),下面創(chuàng)建一天的K線數(shù)據(jù),數(shù)據(jù)的間隔為1分鐘(1min)。

import pandas as pd
import numpy as np

# 創(chuàng)建時(shí)間序列的列,時(shí)間間隔1分鐘
date_col = pd.date_range("2024-01-01", "2024-01-02", freq="1min")
data_len = len(date_col)

# 模擬的K線數(shù)據(jù)
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

其中各個(gè)字段的含義:
open(開盤價(jià)),close(收盤價(jià)),high(最高價(jià)),low(最低價(jià)),volumn(成交量)。

2. 周期轉(zhuǎn)換和數(shù)據(jù)聚合

如果有股票或者類似交易的朋友都知道,K線的時(shí)間間隔是不固定的,不一定像上面的測(cè)試數(shù)據(jù)那樣間隔1分鐘,
一般根據(jù)自己的買賣頻率會(huì)查看不同時(shí)間間隔的K線。

但是采集數(shù)據(jù)時(shí),一般不會(huì)去采集各種時(shí)間間隔的K線,我們可以根據(jù)1分鐘K線,去轉(zhuǎn)換其他不同時(shí)間間隔的K線。
轉(zhuǎn)換的方法,就是使用pandasresample函數(shù)。
通過(guò)resample周期轉(zhuǎn)換其實(shí)就是以一定的周期對(duì)數(shù)據(jù)進(jìn)行groupby,所以,resample也像groupby一樣,需要對(duì)新周期中的數(shù)據(jù)進(jìn)行聚合。

比如,下面的數(shù)據(jù)我們將1分鐘的K線轉(zhuǎn)換為5分鐘的K線。

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

比如,原始數(shù)據(jù)每5個(gè)聚合成一個(gè)。
以前5個(gè)數(shù)據(jù)(2024-01-01 00:00:00~2024-01-01 00:04:00)為例。

open取第一個(gè)值,close取最后一個(gè)值,high取最大值,low取最小值,volumn取合計(jì)值。

除了上面的5分鐘的數(shù)據(jù),通過(guò)resample還可以聚合15分鐘的K線,1小時(shí),4小時(shí)等等各種時(shí)間間隔的K線。
方法類似,這里不再一一贅述。

3. 周期中的缺失值

對(duì)于完整的數(shù)據(jù),就像上面那樣轉(zhuǎn)換即可,然而實(shí)際情況下的數(shù)據(jù),部分缺失的情況是很常見的,
特別是上面的1分鐘K線數(shù)據(jù),極有可能1分鐘沒有交易,出現(xiàn)缺失的情況,有可能連續(xù)5分鐘都沒有數(shù)據(jù)。

下面看看數(shù)據(jù)缺失時(shí),resample轉(zhuǎn)換的情況。
先從上面的測(cè)試數(shù)據(jù)中取20個(gè)再進(jìn)行一些刪減,構(gòu)造數(shù)據(jù)缺失的情況:

df_ = df.copy()
df_ = df_.iloc[:20]
df_ = df_.drop([3, 5, 6, 7, 8, 9, 10, 15, 16])
df_ = df_.reset_index(drop=True)
df_

每組都有一些缺失,其中(2024-01-01 00:06:00~2024-01-01 00:10:00)整個(gè)5分鐘的數(shù)據(jù)都缺失了。

此時(shí),再按照5分鐘間隔來(lái)resample,得到:

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

從中可以得出兩個(gè)結(jié)論:

  • 部分缺失,就用剩余的數(shù)據(jù)來(lái)聚合計(jì)算(比如5分鐘的數(shù)據(jù)就剩3條,那就用這3條來(lái)聚合)
  • 整個(gè)缺失,那么就用聚合函數(shù)的默認(rèn)值來(lái)填充,比如上面2024-01-01 00:05:00這條

4. 總結(jié)

時(shí)間序列數(shù)據(jù)的分析過(guò)程中,周期轉(zhuǎn)換是一個(gè)很常用的操作。

不過(guò),不是簡(jiǎn)單的用resample來(lái)轉(zhuǎn)換就完事了,周期轉(zhuǎn)換之后也會(huì)帶來(lái)新的問題,比如上面示例中由于轉(zhuǎn)換形成的空值,這些空值是要直接丟棄?還是要插值?如果要插值的話,是用基準(zhǔn)數(shù)據(jù)來(lái)填充?還是用平均值?用移動(dòng)平均值?用中位數(shù)?等等來(lái)插值,這些都需要根據(jù)具體的分析場(chǎng)景和使用的分析算法來(lái)進(jìn)一步討論。本文主要介紹使用resample來(lái)轉(zhuǎn)換數(shù)據(jù),而關(guān)于插值方法的詳細(xì)討論將另文闡述。

以上就是詳解如何使用pandas進(jìn)行時(shí)間序列數(shù)據(jù)的周期轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于pandas數(shù)據(jù)周期轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python3+PyQt5 數(shù)據(jù)庫(kù)編程--增刪改實(shí)例

    python3+PyQt5 數(shù)據(jù)庫(kù)編程--增刪改實(shí)例

    今天小編就為大家分享一篇python3+PyQt5 數(shù)據(jù)庫(kù)編程--增刪改實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • LyScript獲取上一條與下一條匯編指令的方法詳解

    LyScript獲取上一條與下一條匯編指令的方法詳解

    LyScript 插件默認(rèn)并沒有提供上一條與下一條匯編指令的獲取功能,當(dāng)然你可以使用LyScriptTools工具包直接調(diào)用內(nèi)置命令得到,本文就為大家詳細(xì)講講如何實(shí)現(xiàn)
    2022-07-07
  • 詳解python中*號(hào)的用法

    詳解python中*號(hào)的用法

    這篇文章主要介紹了python中*號(hào)的用法,文中通過(guò)代碼給大家介紹了雙星號(hào)(**)的用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python 多線程不加鎖分塊讀取文件的方法

    Python 多線程不加鎖分塊讀取文件的方法

    今天小編就為大家分享一篇Python 多線程不加鎖分塊讀取文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python語(yǔ)言中pandas字符串分割str.split()函數(shù)

    python語(yǔ)言中pandas字符串分割str.split()函數(shù)

    分列在我們?nèi)粘9ぷ髦薪?jīng)常用到,從各種系統(tǒng)中導(dǎo)出的什么訂單號(hào)、名稱、日期很多都是復(fù)合組成的,這些列在匹配、合并時(shí)沒有辦法使用,我們經(jīng)常需要將她們分開,下面這篇文章主要給大家介紹了關(guān)于python語(yǔ)言中pandas字符串分割str.split()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法

    PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • DRF之請(qǐng)求與響應(yīng)的實(shí)現(xiàn)

    DRF之請(qǐng)求與響應(yīng)的實(shí)現(xiàn)

    本文主要介紹了DRF請(qǐng)求與響應(yīng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Django解決frame拒絕問題的方法

    Django解決frame拒絕問題的方法

    這篇文章主要介紹了Django解決frame拒絕問題的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python?ES連接服務(wù)器的方法詳解

    python?ES連接服務(wù)器的方法詳解

    使用Python連接Elasticsearch服務(wù)器進(jìn)行數(shù)據(jù)搜索和分析是一項(xiàng)常見操作,本文詳細(xì)介紹了如何使用elasticsearch-py客戶端庫(kù)連接到Elasticsearch服務(wù)器,并執(zhí)行創(chuàng)建索引、添加文檔及搜索等基本操作
    2024-10-10
  • Python實(shí)現(xiàn)從文件中加載數(shù)據(jù)的方法詳解

    Python實(shí)現(xiàn)從文件中加載數(shù)據(jù)的方法詳解

    日常工作中有許多類型的文件,以及許多方法,用它們從文件中提取數(shù)據(jù)來(lái)圖形化。本文將利用Python實(shí)現(xiàn)從文件中加載數(shù)據(jù),感興趣的可以了解一下
    2022-04-04

最新評(píng)論

米脂县| 礼泉县| 延津县| 通海县| 灯塔市| 凤庆县| 保亭| 怀远县| 康定县| 东城区| 博兴县| 汉阴县| 珲春市| 屯昌县| 九龙坡区| 枣庄市| 达孜县| 治多县| 大厂| 仙游县| 天长市| 仁怀市| 平乐县| 红安县| 绥芬河市| 乌鲁木齐县| 吐鲁番市| 麦盖提县| 宁晋县| 米林县| 文登市| 壶关县| 华宁县| 宜阳县| 如皋市| 曲麻莱县| 青川县| 江山市| 泾阳县| 宁津县| 正镶白旗|