numpy array와 pandas에서 var을 구할 때 차이점

numpy array가 다음과 같이 주어진다.

 

그림1. array 예시

 

여기서 분산을 구하고자 하는데 numpy.var()을 이용하여 구할 수 있다.

 

그림2. 주어진 array에서 분산을 구함

 

그런데 위 array를 pandas의 series에 넣어본다면

 

그림3. array를 series에 넣었을 때

 

이 상태에서 분산을 구할려면 .var()을 하면 구할 수 있다

 

그림4. pandas의 var와 numpy의 var

두 방식에서 구한 var에 차이가 있다

 

분명 같은 값들이 들어간 array로 var을 구한건데 왜 차이가 있을까?

 

그것은 numpy array에서는 var을 biased estimator로 구하기 때문이다.

 

모든 데이터 편차제곱합을 개수 N으로 나눠서 구한다 

 

그림5. numpy.var의 ddof 설명

 

반면 pandas의 dataframe에서 var은 unbiased estimator로 구하기 때문이다.

 

그림6. pandas.DataFrame.var의 ddof 설명

 

그래서 두 값이 같게 만들려면 pd.Series에서 var의 옵션에 ddof=0으로 두면 두 값이 같게 된다.

 

또는 numpy.var()에서 ddof=1로 옵션을 두면 같게 된다

 

그림7. ddof 옵션을 두어 var을 계산

 

참고

 

https://stackoverflow.com/questions/62938070/different-values-of-numpy-var-and-pandas-var

 

Different values of Numpy.var() and Pandas.var()

I am learning a bit about Standard Scaler in datasets. I am noticing a strange behavior which I think might be a syntax or logical error in my code, but can anyone correct me. As we know that when ...

stackoverflow.com

 

TAGS.

Comments