如何从指定起始日期获取时间序列数据并绘制对应图表?
解决指定日期范围获取SPX数据并绘图的问题
嗨,我来帮你搞定这个需求!其实利用pandas的日期索引筛选就能轻松实现,下面分步骤给你讲清楚:
第一步:补全原代码依赖并格式化日期索引
原代码里用到了plt但没导入,而且Alpha Vantage返回的pandas数据框索引默认是字符串格式的日期,我们先把它转换成datetime类型,方便后续筛选:
import pandas as pd import matplotlib.pyplot as plt from alpha_vantage.timeseries import TimeSeries # 初始化Alpha Vantage客户端 ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas') # 获取SPX每日数据 data, meta_data = ts.get_daily('SPX') # 将索引转换为datetime类型,方便日期筛选 data.index = pd.to_datetime(data.index)
第二步:筛选指定起始日期的数据
假设你想获取从2023-01-01开始的数据,直接用日期索引做条件筛选即可:
# 自定义你的起始日期 start_date = '2023-01-01' # 筛选出起始日期及之后的所有数据 filtered_data = data[data.index >= start_date]
第三步:基于筛选后的数据绘制收盘价时间序列
现在用筛选后的数据集绘图,就能只展示指定日期后的走势了:
# 绘制筛选后的收盘价曲线,可自定义图表标题 filtered_data['4. close'].plot(title='SPX Close Price (From 2023-01-01)') # 调整图表布局避免元素被截断 plt.tight_layout() # 显示最终图表 plt.show()
额外技巧:直接设置绘图的x轴范围
如果你不想提前筛选数据,也可以在绘图后通过plt.xlim()指定显示的日期范围,效果类似:
# 先绘制全部数据 data['4. close'].plot() # 设置x轴起始日期,None表示保留原数据的结束日期 plt.xlim(pd.to_datetime('2023-01-01'), None) plt.tight_layout() plt.show()
不过更推荐提前筛选数据的方式,这样可以减少不必要的数据处理,效率更高~
内容的提问来源于stack exchange,提问作者JustOneMan
相关产品推荐
相关产品推荐

