使用Panda数据帧分析时间序列数据



我有一些时间序列数据,如下所示,我想对进行一些具体分析

"timestamp","epic","closeprice_bid","closeprice_ask","last_traded_volume"
"2020-03-24 12:00:00","KA.D.BARC.DAILY.IP","91.17","91.38","7836277"
"2020-03-24 13:00:00","KA.D.BARC.DAILY.IP","90.33","90.66","8001075"
"2020-03-24 14:00:00","KA.D.BARC.DAILY.IP","89.96","90.22","11490520"
"2020-03-24 15:00:00","KA.D.BARC.DAILY.IP","91.62","91.89","9014323"
"2020-03-24 16:00:00","KA.D.BARC.DAILY.IP","93.84","94.23","7270054"
"2020-03-24 16:00:00","KA.D.BARC.DAILY.IP","93.84","94.23","7270054.0"
"2020-03-25 08:00:00","KA.D.BARC.DAILY.IP","109.47","109.89","25414762.0"
"2020-03-25 08:00:00","KA.D.BARC.DAILY.IP","109.47","109.89","25414762

我想模拟一种基本的交易策略,通过使用Panda数据帧,我可以通过1(检查前几天的最后收盘价_bid和今天的第一个收盘价_bid之间是否存在≥1%或≤1%的差异来分析时间序列数据2(每小时的数据检查收盘价_bid是否≥今天开盘价的3%或≤3%。

有人能为如何使用熊猫进行上述分析提供一些指导吗

我已经使用以下代码将数据加载到df中:

cols = ['timestamp', 'epic', 'closeprice_bid', 'closeprice_ask','last_traded_volume']
stock_data = pd.read_csv('barc.csv', header=0, names=cols)
stock_data['closeprice_bid'] = pd.to_numeric(stock_data['closeprice_bid'], errors='coerce')

您可以执行以下操作:

(stock_data['closeprice_bid'].shift(-1) -stock_data['closeprice_bid'])/stock_data['closeprice_bid'] > 0.01

并且对于每小时的情况类似。

您可以尝试以下操作:

df['date'] = pd.to_datetime(df['timestamp']).dt.date
df['time'] = pd.to_datetime(df['timestamp']).dt.time
df.sort_values(by=['date', 'time'], inplace=True)
first = df.groupby(by='date').first()['closeprice_bid']
df_first = first.to_frame().reset_index()
last = df.groupby(by='date').last()['closeprice_bid']
df_last = last.to_frame().reset_index()
df_merged = df_first.merge(df_last, left_on=['date'], right_on=['date'])
df_merged.set_index(['date'], inplace=True)
df_merged['pct_change'] = df_merged.pct_change(axis=1)['closeprice_bid_y']
df_merged['greater_than_1'] = df_merged['pct_change'] > 1
print(df_merged)
closeprice_bid_x  closeprice_bid_y  pct_change  greater_than_1
date
2020-03-24             91.17             93.84    0.029286           False
2020-03-25            109.47            109.47    0.000000           False

最新更新