deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 릿코드
  • 마이데이터
  • 군수열
  • 등비수열
  • 파이썬
  • 최소공배수
  • 부트캠프
  • 빅데이터
  • 소인수분해
  • 계차수열
  • 데이터사이언티스트
  • 코딩
  • 모듈
  • 네카라쿠배
  • pandas
  • 기초수학
  • 통계
  • 등차수열
  • matplotlib
  • 제로베이스
  • 팩토리얼
  • 데이터분석
  • BMI
  • 미니콘다
  • 프로그래밍
  • 데이터분석가
  • 계산기
  • 데이터엔지니어
  • SQL
  • 함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

[파이썬 기초] 알고리즘 - 최빈값, 근사값, 평균
Python/Python 기초

[파이썬 기초] 알고리즘 - 최빈값, 근사값, 평균

2022. 5. 13. 12:51

🗝 최빈값

- 빈도 수가 가장 많은 데이터

- 최대값 알고리즘을 이용하여 배열을 새로 만들고, 값이 나올 때마다 각 인덱스에 +1

class MaxAl:

    def __init__(self,arr):
        self.arr = arr
        self.max = 0
        self.maxNumIdx = 0

    def setMax(self):
        self.max = self.arr[0]
        self.maxIdx = 0

        
        for i, n in enumerate(self.arr):
            if self.max < n:
                self.max = n
                self.maxIdx = i

    def getMax(self):
        return self.max

    def getMaxIdx(self):
        return self.maxIdx

import random as rd

nums = [rd.randint(0,10) for i in range(10)]
print(f'array : {nums}')

maxNum = MaxAl(nums)
maxNum.setMax()
maxResult = maxNum.getMax()

arIdx = [0 for i in range(maxResult+1)]

for i in nums:
    arIdx[i] +=1

print(f'0-최대값까지 빈도 : {arIdx}')
newNum = MaxAl(arIdx)
newNum.setMax()
maxIdx = newNum.getMax()
maxNewNum = newNum.getMaxIdx()

print(f'최대값 : {maxNewNum}, 빈도 : {maxIdx}')


------------------------------------------------
array : [3, 5, 6, 0, 3, 6, 6, 3, 10, 8]
0-최대값까지 빈도 : [1, 0, 0, 3, 0, 1, 3, 0, 1, 0, 1]
최대값 : 3, 빈도 : 3
 

[파이썬 기초] 최빈값 점수 구하기

🔍  문제 - 70~100점 사이의 20명을 순서대로 출력하는 프로그램 생성 - 점수는 5점 단위 난수로 출력 🗝 사용함수 index, num in enumerate(array) : array 안의 인덱스와 데이터를 출력 🖥 실행 1) 모듈 class

designingdata.tistory.com


 

🗝 근사값

- 특정 값과 가장 가까운 값을 찾음.

import random as rd
array = rd.sample(range(0,50),10)
print(f'array : {array}')

inputNum = int(input('input Num : '))

nearNum = 0
minNum = 50  #데이터가 많을 때는 최고값 알고리즘을 사용할 것

for n in array:
    absNum = abs(n-inputNum)

    if absNum < minNum:  #지금 차이가 전의 차이보다 작으면
        minNum = absNum  #지금 차이를 넣어준다.
        nearNum = n     #근사값에 지금 데이터를 넣어준다.

print(f'근사값 : {nearNum} 차이 : {minNum}')


---------------------------------------------
array : [7, 19, 23, 16, 32, 38, 3, 35, 20, 6]
input Num : 42
근사값 : 38 차이 : 4

 

cf. 최소값 알고리즘 이용

import random as rd
array = rd.sample(range(0,50),10)
print(f'array : {array}')

inputNum = int(input('input Num : '))

absArr = []

for i in range(len(array)):
    absArr.append(abs(array[i]-inputNum))

print(f'차이 : {absArr}')

nearNum = absArr[0]
nearIdx = 0
for i,n in enumerate(absArr):
    if nearNum > n:
        nearNum = n
        nearIdx = i

print(f'근사값 : {array[nearIdx]} 차이 : {nearNum}')

---------------------------------------------
array : [20, 41, 27, 2, 11, 3, 0, 10, 40, 45]
input Num : 21
차이 : [1, 20, 6, 19, 10, 18, 21, 11, 19, 24]
근사값 : 20 차이 : 1
 

[근사값] 학점 출력기

🔍  문제 - 국어, 영어, 수학, 과학, 국사 점수를 저장하고 평균에 따른 학점 출력 - 95 : A /  85 : B / 75 : C / 65 : D / 55 : F 🗝 사용함수 round(n,x) : 소수 n을 x자리 수까지 출력 🖥 실행 kor = int..

designingdata.tistory.com


 

🗝 평균

1) 기본 평균

import random as rd

array = rd.sample(range(1,100),10)
sum = 0

for i in array:
    sum += i

avg = sum/len(array)
print(f'array : {array}')
print(f'avg : {round(avg,2)}')


--------------------------------------------
array : [8, 84, 63, 81, 11, 2, 73, 80, 65, 67]
avg : 53.4

 

2) 특정 범위의 평균

import random as rd

array = rd.sample(range(1,100),10)
sum = 0
targetNum = []
for i in array:
    if i >= 50 and i <= 90:
        sum += i
        targetNum.append(i)

avg = sum/len(targetNum)
print(f'array : {array}')
print(f'target : {targetNum}')
print(f'avg : {round(avg,2)}')


--------------------------------------------------
array : [49, 13, 45, 29, 26, 79, 44, 89, 20, 71]
target : [79, 89, 71]
avg : 79.67

 

3) 정수만 뽑아 평균 구하기

array = [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]

sum = 0
targetNum = []
for i in array:
    if i - int(i) == 0:
        sum += i
        targetNum.append(i)

avg = sum/len(targetNum)
print(f'array : {array}')
print(f'target : {targetNum}')
print(f'avg : {round(avg,2)}')

--------------------------------------------------------------
array : [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]
target : [4, 0, 5, 9, 3, 1, 11]
avg : 4.71

'Python > Python 기초' 카테고리의 다른 글

[파이썬 기초] 알고리즘 - 재귀, 하노이의 탑  (0) 2022.05.13
[파이썬 기초] 알고리즘 - 최대값, 최소값  (0) 2022.05.12
[파이썬 기초] 알고리즘 - 정렬  (0) 2022.05.06
[파이썬 기초] 알고리즘 - 검색,순위  (0) 2022.05.06
[파이썬 기초] 딕셔너리(Dictionary)  (0) 2022.05.04
    'Python/Python 기초' 카테고리의 다른 글
    • [파이썬 기초] 알고리즘 - 재귀, 하노이의 탑
    • [파이썬 기초] 알고리즘 - 최대값, 최소값
    • [파이썬 기초] 알고리즘 - 정렬
    • [파이썬 기초] 알고리즘 - 검색,순위
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바