繁体   English   中英

从 1 分钟到 5 分钟的数据重新采样 pandas 时间序列时遇到问题

[英]Trouble resampling pandas timeseries from 1min to 5min data

我有一个 1 分钟间隔的盘中股票数据,如下所示:

import yfinance as yf
import pandas as pd
n = yf.download('^nsei', period= '5d', interval= '1m')

我正在尝试将其重新采样为“5m”数据,如下所示:

n = n.resample('5T').agg(dict(zip(n.columns, ['first', 'max', 'min', 'last', 'last', 'sum'])))

但它试图重新采样不在我的数据中的日期时间信息。 市场数据仅在下午 3:30 之前可用,但当我查看重新采样的 dataframe 时,我发现它试图在整个 24 小时内重新采样。
如何在下午 3:30 之前停止重新采样并继续下一个日期?
由于这个原因,现在 dataframe 主要具有 NaN 值。 任何建议都将受到欢迎。

我不确定你想用那个agg() function 来实现什么。 假设'first'指的是第一个分位数, 'last'指的是最后一个分位数,并且您想计算每列的一些统计信息,我建议您执行以下操作:

获取您的数据:

import yfinance as yf
import pandas as pd
n = yf.download('^nsei', period= '5d', interval= '1m')

重新采样您的数据:

resampled_df = n.resample('5T').mean()

确认有缺失值:

print(resampled_df.isna().sum())

删除缺失值(这将删除所有缺失值的行,这样 15:30 之后重新采样的行将消失):

resampled_df = resampled_df.dropna()

获取统计数据:

statistics = resampled_df.describe()
statistics

请注意, describe()将不包含总和,因此为了添加它,您可以执行以下操作:

statistics = pd.concat([statistics, resampled_df.agg(['sum'])])
statistics

Output: 在此处输入图像描述

agg() 是为每一列应用单独的操作方法,我使用它是为了看到股票技术分析中所谓的“烛台”形态。
通过删除 NaN 值,我能够解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM