#python #pandas
#python #pandas
Вопрос:
Я использую.rolling(5).std() для получения серии std в окне (size=5, a — pd.Series)
но я обнаружил, что результат — это не то, чего я хочу.
вот пример:
In [15]: a = [-49, -50, -50, -51, -48]
In [16]: pd.Series(a).rolling(5).std()
Out[16]:
0 NaN
1 NaN
2 NaN
3 NaN
4 1.140175
dtype: float64
In [17]: np.std(a)
Out[17]: 1.0198039027185568
Я думаю, что последний элемент pd.Series(a).rolling(5).std()
должен быть равен np.std(a),
но почему это не так?
Ответ №1:
Вероятно, это связано с тем, что Pandas нормализуется с помощью N - 1
вместо N
. Смотрите первую заметку по адресу https://pandas.pydata.org/docs/reference/api/pandas.core.window.rolling .Rolling.std.html
Вы можете изменить это поведение, используя аргумент степеней свободы ddof
, например pd.Series(a).rolling(5).std(ddof=0)
.