簡體   English   中英

將每日 ohlcv 數據重新采樣為每周和每月

[英]Resampling daily ohlcv data to weekly and monthly

我已將每日 ohlcv 數據重新采樣為每周和每月,以獲得每周和每月的百分比回報。

現在我意識到當我將它重新采樣回每天時,我在每個月的日子里沒有任何價值,這當然是有道理的。 但我不確定如何在保持每周和每月百分比的同時將這些數據傳回。 你們認為最好的方法是什么,因為我想將其應用於每個市值的前 50 種貨幣。

對不起,我是蟒蛇/熊貓菜鳥:D

import pandas as pd
import datetime
import pandas_datareader.data as web
import numpy as np
df = pd.read_csv("ethusdt.csv",parse_dates=["time"], index_col="time")

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum',
    'daily_change':'sum'
    }

df = df.resample('W').agg(ohlc_dict)

df['weekly_change'] = ((df['close'] / (df['open'])-1)*100)

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum',
    'daily_change':'sum',
    'weekly_change':'sum'
    
    }

df = df.resample('M').agg(ohlc_dict)

df['monthly_change'] = ((df['close'] / (df['open'])-1)*100)

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum',
    'daily_change':'sum',
    'weekly_change':'sum'
    
    }

df = df.resample('D').agg(ohlc_dict)

當您將一個名為 df 的 DataFrame 重新采樣到一個也稱為 df 的 DataFrame 中時,如下所示,您會用聚合數據覆蓋您的日常數據,並且無法取回它。

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum',
    'daily_change':'sum'
    }
df = df.resample('W').agg(ohlc_dict)

如果您改為將聚合數據設為具有不同名稱的新 DataFrame,則將舊數據保留在名為 df 的 DataFrame 中,並在新 DataFrame 中進行處理。 像這樣:

weeklydf = df.resample('W').agg(ohlc_dict)
weeklydf['weekly_change'] = ((weeklydf['close'] / (weeklydf['open'])-1)*100)


現在,如果您想將此新的“weekly_change”列添加到每日 DataFrame 中,您只需執行以下操作:

df["weekly_change"] = weeklydf["weekly_change"]

當然,“weekly_change”列每周只有值,中間有 NaN,但所有其他列仍將采用每日分辨率,所有數據都存在。 您可以執行類似的過程來獲取每月數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM