在python中滚动中位数

时间:2011-03-30 12:26:50

标签: python finance quantitative-finance pandas

我有一些基于每日收盘价的股票数据。我需要能够将这些值插入到python列表中并获得最后30个关闭的中位数。有没有这样做的python库?

3 个答案:

答案 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]