생각없이 numpy와 pandas에서 std를 남용하다 낭패를 봤다.
논문 두페이지에 테이블을 가득 채워놨는데 모표준편차가 들어갈 자리에 표본표준편차가 들어간 것이다.
그리고 그 원인은 numpy와 pandas의 std 함수때문이었다.
numpy의 std는 모표준편차(ddof=0)를 default로 한다. [docs]
반면 pandas의 std는 표본표준편차(ddof=1)를 default로 한다. [docs]
그러므로 생각없이 std()를 사용하면 모표준편차와 표본표준편차를 혼용하게 된다.
아래는 그 예시이다.
> import numpy as np > import pandas as pd > df = pd.DataFrame([1,2,3,4,5], columns='a') > df['a'].std() > df['a'].values.std()
pandas에서 직접 std를 호출하면 표본표준편차가 계산되지만
values를 통해 numpy로 변형하고 std를 호출하면 모표준편차가 계산된다는 것이다.
이를 해결하는 가장 좋은 방법은 std 함수의 인자로 ddof를 명시하는 것이다.
이렇게 되면 사용자는 std 함수를 사용할 때 어떤 목적으로 사용하는지를 확인하면서 사용할 수 있다.
아래는 바람직한 예시이다.
> import numpy as np > import pandas as pd > df = pd.DataFrame([1,2,3,4,5], columns='a') > df['a'].std(ddof=0) > df['a'].values.std(ddof=0)