繁体   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