我有一些基于每日收盘价的股票数据。我需要能够将这些值插入到python列表中并获得最后30个关闭的中位数。有没有这样做的python库?
答案 0 :(得分:9)
在纯Python中,将数据放在Python列表a
中,您可以
median = sum(sorted(a[-30:])[14:16]) / 2.0
(这假设a
至少有30个项目。)
使用NumPy包,您可以使用
median = numpy.median(a[-30:])
答案 1 :(得分:4)
您考虑过pandas了吗?它基于numpy
,可以自动将时间戳与您的数据相关联,只要您使用numpy.nan
填充它,就会丢弃所有未知日期。它还通过matplotlib提供了一些相当强大的图形。
基本上它是专为python中的财务分析而设计的。
答案 2 :(得分:2)
不是排序范围中的中间值?
所以,假设您的列表是stock_data
:
last_thirty = stock_data[-30:]
median = sorted(last_thirty)[15]
现在您只需要找到并修复已发现的错误,并处理stock_data
少于30个元素的情况......
让我们在这里尝试一下:
def rolling_median(data, window):
if len(data) < window:
subject = data[:]
else:
subject = data[-30:]
return sorted(subject)[len(subject)/2]