【发布时间】:2020-09-11 10:47:47
【问题描述】:
我正在尝试根据滚动标准偏差获取数据帧的分布。
我虽然想使用pd.count,但后来我意识到它不允许改变标准偏差。 scipy.stats.pmf 也有同样的问题。
所以我最终决定使用 for 循环:
from pandas_datareader import data as web
data = web.DataReader('AAPL', data_source='yahoo')
window = 20
data['stan_dev'] = data['Adj Close'].rolling(window).std()
data['ma'] = data['Adj Close'].rolling(window).mean()
data.dropna(inplace=True)
data['difference'] = data['Adj Close'] - data.ma
bins = [0]*7
for i in range(len(data)):
for j in range(-3, 3):
if (j*data.iloc[i]['stan_dev']) < data.iloc[i]['difference'] <= ((j+1)*data.iloc[i]['stan_dev']):
bins[j + 3] += 1
问题是,它很慢,我什至不确定它是否有效。
有没有更 Pythonic 的方式来处理它?
【问题讨论】:
-
您能否提供一些数据以使 sn-p 正常工作?
标签: python python-3.x pandas matplotlib statistics