我有一些基于每日收盘价的股票数据。我需要能够将这些值插入到 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]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top