在python中滚动中位数

我有一些基于每日收盘价的股票数据。我需要能够将这些值插入到python列表中并获得最后30个关闭的中位数。有没有这样做的python库?     
已邀请:
你考虑过熊猫吗?它基于
numpy
,可以自动将时间戳与您的数据相关联,并且只要您用
numpy.nan
填充它就会丢弃任何未知日期。它还通过matplotlib提供了一些相当强大的图形。 基本上它是专为python中的财务分析而设计的。     
在纯Python中,将数据放在Python列表中,你可以做到
median = sum(sorted(a[-30:])[14:16]) / 2.0
(这假设
a
至少有30个项目。) 使用NumPy包,您可以使用
median = numpy.median(a[-30:])
    
不是中位数只是排序范围中的中间值? 所以,假设你的清单是
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]
    

要回复问题请先登录注册