python中的滚动中位数
-
14-11-2019 - |
题
我有一些基于每日收盘价的股票数据。我需要能够将这些值插入到 python 列表中并获取最近 30 个收盘价的中位数。有没有一个Python库可以做到这一点?
解决方案
你是否考虑过 pandas ?它基于numpy
,可以自动将时间戳与您的数据相关联,只要使用numpy.nan
填充它,就丢弃任何未知日期。它还通过Matplotlib提供一些相当强大的图形。
基本上它被设计用于Python的财务分析。
其他提示
在纯Python中,在Python列表生成的数据中具有您的数据,可以做
median = sum(sorted(a[-30:])[14:16]) / 2.0
.
(这假设世代odicetagcode具有至少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]
不隶属于 StackOverflow