Метод skew аксессора rolling
Метод skew аксессора rolling применяется к DataFrame или Series
и возвращает асимметрию значений в скользящем окне. Асимметрия показывает степень
асимметрии распределения данных относительно среднего значения. Для нормального
распределения асимметрия равна 0. Положительное значение указывает на правую асимметрию
(длинный правый хвост), отрицательное - на левую асимметрию (длинный левый хвост).
Метод не принимает дополнительных параметров, кроме стандартных для агрегирующих
функций rolling, таких как ddof (по умолчанию 1) для поправки на степень свободы.
Синтаксис
df.rolling(window).skew()
Пример
Давайте создадим серию с данными и вычислим асимметрию в скользящем окне размером 3:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
res = ser.rolling(3).skew()
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
dtype: float64
Пример
Рассмотрим более сложный пример с таблицей и асимметричными данными:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 10, 4, 5, 100, 7, 8, 9, 10],
'b': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
})
res = df.rolling(4).skew()
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 1.428571 0.000000
4 0.000000 0.000000
5 1.676557 0.000000
6 1.356554 0.000000
7 1.333711 0.000000
8 0.657306 0.000000
9 0.317941 0.000000
Пример
Также можно использовать параметр ddof для изменения степени свободы:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(4).skew(ddof=0)
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 NaN
3 0.000000
4 0.000000
dtype: float64