반응형
- 저번 포스팅에 이어서 데이터 기술적 지표를 각각 구현해 보겠습니다.
- 이번 포스팅에는 count, mean, std를 구현해 보고 다음 포스팅에서 min, max, quartile을 구현해 볼게요
count
데이터의 총개수 이며 파이썬의 len함수를 통해 아주 쉽게 구할수 있다.
count = 0
for val in values:
count += 1
print(f'count : {count}')
- 아주 간단한 내용이지만 설명을 드리자면, count변수에 리스트 value의 개수만큼 for문을 돌면서 값을 1씩 증가시킵니다.
- 이러면 for문이 종료후에는 count변수에는 데이터의 총 개수가 있게 됩니다.
mean
- 평균은 우리가 일상생활에 가장많이 쓰이는 통계이지 않을까 생각됩니다. 구현은 데이터의 총 합을 총개수로 나눠주면 됩니다.
- pandas, numpy에서 .mean()함수를 통해 쉽게 구할수 있습니다.
all_count = 0
value_sum = 0
for val in values:
all_count += 1
value_sum += val
print(f'mean : {value_sum/all_count}')
# all_count없이 구하기
#print(f'mean : {value_sum/len(values)}')
- all_count는 위에서 구한 count와 같은 값이 들어가게 되고 value_sum은 데이터가 for문을 돌면서 해당 리스트의 값이 모두 합쳐진 값이 들어있게 됩니다. 그리고 간단하지만 전체 합에서 개수를 나눠주면 평균이 나옵니다.
std
- 표준편차는 많이 들어보셨겠지만 생소하신분들이 있을거예요. 당황하지말고 직접구해 보시면 아주쉽게 구할수 있는 값이란걸 알수 있습니다.
- pandas, numpy에서 .std()함수를 통해 쉽게 구할수 있습니다.
all_count = 0
value_sum = 0
for val in values:
all_count += 1
value_sum += val
mean = value_sum/all_count
variance_sum = 0
for val in values:
variance_sum +=(val - mean) ** 2
#all_count에서 1을 빼준이유는 ddof(델타자유도)라고 데이터 분산을 구할때 1을 빼준다.
std = np.sqrt(variance_sum / (all_count-1))
print(f'std : {std}')
#import numpy as np
#np.std(values)
- ddof라는 개념이 나왔는데 이는 숫자에서 발생할 수 있는ㄷ 바이어스의 균형을 맞추기위해서 1을 빼줍니다.
- 표준편차를 구하기위해선 먼저 평균을 구해야 합니다. mean을 먼저 구하고 다시 for문을 돌면서 각각의 리스트 값이 평균과 차이가 얼마나 나는지 구해주고 이값에 제곱을 해줍니다. 이것을 모두 더하게 되면 분산값이 나오는거죠
- 그리고 모두 더한(제곱하여)값에 스퀘어 루트를 하면 표준편차가 나오게 됩니다.
그럼 다음 포스팅에서 min,max, quartile값을 구해보도록 하겠습니다.
[Data Science] - python 기술적 지표 구현해 보기(1) [Describe, 평균, 분산, 사분위]
[Data Science] - python 기술적 지표 구현해 보기(2) [count, mean, std 구현하기]
[Data Science] - python 기술적 지표 구현해 보기(3) [min, max, quartile 구현하기]
반응형
'[개발] 이야기' 카테고리의 다른 글
pandas 시각화 - 결측치를 시각화 해보자 [seaborn, missingno] (0) | 2020.09.15 |
---|---|
python 기술적 지표 구현해 보기(3) [min, max, quartile 구현하기] (0) | 2020.09.14 |
python 기술적 지표 구현해 보기(1) [Describe, 평균, 분산, 사분위] (0) | 2020.09.14 |
[데이터 시각화] seaborn scatter (산점도의 이해) (0) | 2020.09.12 |
matplotlib 기본설정 (한글깨짐, 음수깨짐, 레티나, 테마 지정) (0) | 2020.09.12 |
댓글