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

python 기술적 지표 구현해 보기(3) [min, max, quartile 구현하기]

by 헤이나우
반응형
  • 저번 포스팅에 이어서 나머지 min, max, quartile을 구현해 봅시다.

min

데이터의 최소값을 가져옵니다.

min_value = None
for val in values:
    if max_value is None :
        min_value = val

        if max_value > val :
        min_value = val

print(f'min : {min_value}')
  • for문을 돌면서 가장 작은 값을 가져옵니다.
  • min_value에는 for문을 돌면서 가장 작은 값을 가져오게 됩니다.
  • 초기값을 None을 주어서 None값일 경우 무조건 값을 설정합니다.

max

데이터의 가장 큰 값을 가져옵니다.

max_value = None
for val in values:
    if max_value is None :
        max_value = val

    if max_value < val :
        max_value = val

print(f'max : {max_value}')
  • 최소값을 구하는 방법과 일치합니다.
  • 최소값을 구하는 함수에서 max_value가 새로운 val보다 작을경우 변경해줍니다.

quartile

드디어 마지막 4분위 구하는 방법까지 왔습니다.

4분위는 리스트를 정렬한뒤에 각각 1/4, 1/2, 3/4 지점의 값을 가져옵니다.

정렬하는 알고리즘은 여기서 구현하지 않도록 하겠습니다.

25%

.25분위 즉 1/4 지점의 값을 가져옵니다.

import math
q25 = 0
num = len(values)
print(f'전체 길이 : {num}')

q25_num = ((num - 1) * 0.25)
if q25_num % 1 == 0:
    q25 = values[int(q25_num)]
else:
    tmp1 = values[math.trunc(q25_num)] #내림
    tmp2 = values[math.ceil(q25_num)] #올림

    q25 = tmp1 + ((tmp2 - tmp1) * (q25_num % 1))
print(f'q25 : {q25}')
  • 리스트의 25%지점의 값을 가져옵니다. 우선 25%지점의 인덱스를 가져옵니다.
  • 전체 길이의 0.25를 곱해주면 25%지점이고 이것이 만약 소수점이면 내림한 인덱스와 올림한 인덱스의 소수점(.25면 25%지점.)을 구해야 합니다.
    • (q25_num % 1)) 이렇게 하면 0.25지점의 소수점만 가져와서 곱해주면 올림한 인덱스와 내림한인덱스의 값의 25%지점의 값을 구할수 있습니다.

50%

중앙값은 25%지점이나 75%지점의 값보단 수월하게 가져올 수 있습니다.

import math
q25 = 0
num = len(values)
q50 = 0
#중위수 구하기
if num % 2 == 0:
    #짝수
    q50 = (values[int(num/2)-1] + values[int(num/2)]) / 2
else:
    #홀수
    q50 = values[math.trunc(num/2)]
print(f'q50 : {q50}')
  • 만약 리스트의 총 길이가 홀수면 가운데값 즉, 2로 나눈값에서 내림을 하면 중앙값이고 짝수이면, 2로 나눈 인덱스와 -1한 인덱스의 평균이 중앙값이 됩니다.

75%

.25분위 즉 3/4 지점의 값을 가져옵니다.

import math
q75 = 0
num = len(values)
print(f'전체 길이 : {num}')

q75_num = ((num - 1) * 0.75)
if q75_num % 1 == 0:
    q75 = values[int(q25_num)]
else:
    tmp1 = values[math.trunc(q25_num)] #내림
    tmp2 = values[math.ceil(q25_num)] #올림

    q75 = tmp1 + ((tmp2 - tmp1) * (q75_num % 1))
print(f'q75 : {q75}')
  • 25%지점의 값을 구하는 방법과 동일하고 인덱스를 구할때 0.25가아닌 0.75를 곱해 줍니다.

이렇게 3개의 포스팅을 통해서 기술적 지표를 보는 방법이 알아 봤습니다.

저도 이렇게 구현해보면서 이해하니 좀더 잘되었던것 같습니다.

 

이제 Pandas를 이용할때 여러 시각적 지표나 통계지표를 좀더 잘 이해할수 있겠네요! 

긴글 읽어주셔서 감사드립니다.

 

[Data Science] - python 기술적 지표 구현해 보기(1) [Describe, 평균, 분산, 사분위]

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

[Data Science] - python 기술적 지표 구현해 보기(3) [min, max, quartile 구현하기]

반응형

댓글