본문 바로가기
[개발] 이야기

python 기술적 지표 구현해 보기(2) [count, mean, std 구현하기]

by 헤이나우
반응형
  • 저번 포스팅에 이어서 데이터 기술적 지표를 각각 구현해 보겠습니다.
  • 이번 포스팅에는 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 구현하기]

반응형

댓글