我正在尝试计算 EWM 标准偏差,但结果返回 NaN。我可以计算相同 EWM 函数的平均值,所以我不确定为什么 std 不起作用。任何人都可以帮助解决这个问题吗? Python 版本 3.8.6,pandas 1.2.0。
import pandas as pd
from datetime import datetime
startDate = '2020-01-01'
endDate = '2020-12-31'
dates = pd.date_range(start=startDate, end=endDate)
dates = [date.strftime('%Y-%m-%d') for date in dates]
t1 = pd.DataFrame({'Date':dates,'Values': pd.Series(range(0,(len(dates))))})
t1['Date'] = pd.to_datetime(t1['Date'])
t1['Values_Mean'] = t1['Values'].ewm(halflife='20 days', min_periods = 30, times=t1['Date']).mean()
t1['Values_Std'] = t1['Values'].ewm(halflife='20 days', min_periods = 30, times=t1['Date']).std()
t1.tail(10)
日期 | 价值观 | Values_Mean | Values_Std |
---|---|---|---|
2020-12-22 00:00:00 | 356 | 327.64472219695165 | 南 |
2020-12-23 00:00:00 | 357 | 328.64467481265206 | 南 |
2020-12-24 00:00:00 | 358 | 329.6446289031792 | 南 |
2020-12-25 00:00:00 | 359 | 330.64458442303777 | 南 |
2020-12-26 00:00:00 | 360 | 331.6445413281219 | 南 |
2020-12-27 00:00:00 | 361 | 332.64449957567086 | 南 |
2020-12-28 00:00:00 | 362 | 333.6444591242303 | 南 |
2020-12-29 00:00:00 | 363 | 334.6444199336124 | 南 |
2020-12-30 00:00:00 | 364 | 335.64438196485776 | 南 |
2020-12-31 00:00:00 | 365 | 336.64434518019766 | 南 |
任何帮助表示赞赏。 谢谢。