14-05 표준편차 (std)
DataFrame.std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, kwargs)
개요
std 메서드는 행/열에 대한 표본표준편차를 구하는 메서드입니다.
※ 모표준편차가 아니라 표본표준편차입니다.
※ ※ 후술할 ddof=0 일 경우 자유도가 n이므로 모표준편차로 계산이 가능합니다
여기에 이미지 첨부 필요
사용법
기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, kwargs)
axis : 표본표준편차를 구할 축을 지정합니다.
skipna : 결측치를 무시할지 여부입니다.
level : Multi Index의 경우 대상 레벨을 지정할 수 있습니다.
ddof : 표본표준편차 계산의 분모가되는 자유도를 지정합니다. 산식은 n - ddof값으로 기본값은 n-1입니다.
numeric_only : 숫자, 소수, bool로 구성된 열만 대상으로할지 여부입니다.
kwargs : 함수의 경우에 추가적으로 적용할 키워드입니다.
예시
먼저 기본적인 사용법 예시를 위해 4x4짜리 Multi Index 객체를 생성하겠습니다.
[N,T,F]=[np.NaN,True,False]
idx = [['IDX1','IDX1','IDX2','IDX2'],['row1','row2','row3','row4']]
col = ['col1','col2','col3','col4']
data = [[1,5,7,13],[5,2,19,1],[13,6,4,12],[8,N,0,8]]
df = pd.DataFrame(data,idx,col)
print(df)
>>
col1 col2 col3 col4
IDX1 row1 1 5.0 7 13
row2 5 2.0 19 1
IDX2 row3 13 6.0 4 12
row4 8 NaN 0 8
기본적인 사용법
인수입력 없이 std메서드를 사용할 경우 각 열의 요소들의 표본표준편차를 계산합니다.
print(df.std())
>>
col1 5.057997
col2 2.081666
col3 8.185353
col4 5.446712
dtype: float64
skipna인수의 사용
skipna=False인 경우 결측값이 포함된 경우 NaN을 출력합니다.
print(df.std(skipna=False))
>>
col1 5.057997
col2 NaN
col3 8.185353
col4 5.446712
dtype: float64
axis인수의 사용
axis 인수를 통해 계산의 대상이 될 축을 지정할 수 있습니다.
print(df.std(axis=1))
>>
IDX1 row1 5.000000
row2 8.341663
IDX2 row3 4.425306
row4 4.618802
dtype: float64
level인수의 사용
Multi Index의 경우 level 인수를 이용해 레벨을 지정할 수 있습니다.
print(df.std(level=0))
>>
col1 col2 col3 col4
IDX1 2.828427 2.12132 8.485281 8.485281
IDX2 3.535534 NaN 2.828427 2.828427
ddof인수의 사용
ddof인수란 표본표준편차 계산에 사용되는 분모인 n-ddof 값을 말합니다.
이는 자유도 라고 하며 모표준편차와 표본 표준편차에서 반드시 발생하는 괴리율을 줄이기 위해 사용됩니다.
자유도란 통계적 추정을 할 때 표본자료 중 모집단에 대한 정보를 주는 독립적인 자료의 수를 말합니다.
표본표준편차는 정규분포를 그리는 모 표준편차에 비해서 더 좁은 분산값을 갖기 때문에 n이 아닌 n-1로 나누어줍니다.
※ 보다 자세히 설명하자면 추정량에 대한 증명시 표본분산을 구할 때 n-1로 나누면 정확히 σ²가 나오며
이는 n보다 n-1이 더 값의 정확도가 높음을 의미합니다. 자세한것은 추가로 공부하시는걸 추천드립니다.
자유도에 따라 변하는 값을 보겠습니다. 열당 값은 4개로 즉, n이 4이기 때문에 4부터는 값/0이기때문에 값의 지정이 불가해집니다.
자유도가 증가할 수록 표본 표준편차가 넓어지는것을 확인할 수 있습니다.
print(df.std())
>>
col1 5.057997
col2 2.081666
col3 8.185353
col4 5.446712
dtype: float64
print(df.std(ddof=2))
>>
col1 6.194756
col2 2.943920
col3 10.024969
col4 6.670832
dtype: float64
print(df.std(ddof=3))
>>
col1 8.760708
col2 NaN
col3 14.177447
col4 9.433981
dtype: float64
print(df.std(ddof=4))
>>
col1 NaN
col2 NaN
col3 NaN
col4 NaN
dtype: float64
'파이썬완전정복-Pandas DataFrame > 14. 통계(기초)' 카테고리의 다른 글
Pandas DataFrame 14-07 평균절대편차 (mad) (0) | 2022.02.07 |
---|---|
Pandas DataFrame 14-06 분산 (var) (0) | 2022.02.07 |
Pandas DataFrame 14-04 최빈값 (mode) (0) | 2022.02.07 |
Pandas DataFrame 14-03 중앙값 (median) (0) | 2022.02.07 |
Pandas DataFrame 14-02 평균 (mean) (0) | 2022.02.07 |