HOWTO · Pandas
Pandas에서 롤링 표준 편차 계산
이 튜토리얼은 Pandas에서 롤링 표준 편차를 계산하는 방법을 자세히 설명합니다.
이 페이지의 내용
Pandas Series 또는 DataFrame에서 rolling(window=...)을 호출해 이동 윈도를 정한 다음, 각 윈도에서 표준편차를 계산하려면 std()를 호출합니다. 예를 들어 values.rolling(window=3).std()는 결과마다 관측값 세 개를 사용해 롤링 표준편차를 반환합니다. 전체 윈도가 채워질 때까지 처음 몇 개 결과는 결측값입니다.
rolling().std()로 롤링 표준편차 계산
롤링 계산은 값의 순서를 따라 이동합니다. 각 위치에서 Pandas는 선택한 윈도에 포함된 관측값을 가져와 표준편차를 계산합니다. 다음 예제는 입력과 계산 방식을 쉽게 응용할 수 있도록 짧은 Series를 사용합니다. ddof=0을 명시했으므로 완성된 각 윈도에는 모집단 표준편차가 적용되고, 값은 소수점 둘째 자리까지 출력됩니다.
이 예제를 실행해 보세요:
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
import pandas as pd
values = pd.Series([2, 4, 6, 8, 10])
rolling_std = values.rolling(window=3).std(ddof=0)
print(rolling_std.round(2).to_string())
0 NaN
1 NaN
2 1.63
3 1.63
4 1.63
여기서 window 인수는 각 윈도에 포함할 관측값의 개수입니다. Series나 DataFrame에 datetime 인덱스가 있으면 Pandas에서 시간 기반 윈도도 사용할 수 있습니다. 이런 윈도는 "7D"와 같은 기간으로 지정하며, 날짜에 따라 관측값의 개수가 달라질 수 있습니다. 지원되는 윈도 형식과 옵션은 Pandas 롤링 API를 참고하세요.
윈도를 선택하고 결과 해석하기
요약하려는 기간에 맞는 윈도를 선택하세요. 짧은 윈도는 국소적인 변화에 빠르게 반응하고, 긴 윈도는 더 많은 변화를 완화합니다. 각 출력값은 해당 윈도에 속한 관측값의 산포를 나타내므로 시간에 따른 변동을 비교하는 데 도움이 됩니다. 다만 미래 값을 예측하지는 않습니다.
기본 설정에서는 윈도에 필요한 관측값이 모두 모여야 Pandas가 값을 반환합니다. 따라서 window=3이면 처음 두 위치에는 값이 없습니다. 아직 관측값 세 개가 모두 준비되지 않았기 때문입니다. 관측값이 더 적어도 결과가 적절하다면 min_periods를 설정할 수 있습니다. 단, 초기 결과는 더 작은 표본을 요약한다는 점에 유의하세요. 기본 표준편차는 표본 방식인 ddof=1을 사용합니다. 분석 목적에 맞으면 ddof=0을 전달해 모집단 방식을 사용할 수 있습니다. 입력에 결측값이 있으면 결과가 계산되는 윈도에도 영향을 줄 수 있습니다.
레거시 rolling_std() 코드 이해하기
오래된 코드에서 rolling_std()를 호출하는 경우가 있습니다. 이런 코드를 만나면 롤링 윈도 인터페이스를 사용하도록 바꾸세요. series.rolling(window=...)를 호출한 다음 .std()를 호출하면 됩니다. 이렇게 하면 윈도 선택이 명확해지고 다른 롤링 계산과 같은 패턴을 사용합니다. 계산을 갱신할 때 특정 메서드가 어느 과거 버전에 있었는지 알 필요는 없습니다. 오래된 환경을 유지 관리한다면 프로젝트에서 사용하는 Pandas 버전의 문서를 확인하세요.