320x100
**최빈값을 구해줄때는 최대값이 존재해야 한다.*
첫번째 파일
ex
# 최빈값 알고리즘
import modeMod
import maxMode
ages = [25,27,27,24,31,34,33,31,29,25,45,37,38,46,47,22,24,29,33,35,
27,34,37,40,42,29,27,25,26,27,31,31,32,38,25,27,28,40,41,34]
print(f'employee cnt: {len(ages)}명')
# maxMode모듈을 통해서 최대값을 구해주는 과정
maxAlo = maxMode.MaxAlgorithm(ages)
maxAlo.setMaxIdxAndNum()
maxAge = maxAlo.getMaxNum()
print(f'maxAge: {maxAge}세')
# 위의 maxMode로 통해서 구해진 최대값을 통해서 최빈값을 구해주기
modAlo = modeMod.ModeAlgorithm(ages, maxAge)
modAlo.setIndexList()
# 인덱스에 해당하는 48개의 0이 담긴 리스트
print(f'IndexList: {modAlo.getIndexList()}')
modAlo.printAges()
두번째 파일
maxMode
# 최대값 알고리즘
# 최빈값 알고리즘을 구할때 필요하다고 한다.
class MaxAlgorithm:
def __init__(self, ns):
self.nums = ns
self.maxNum = 0
self.maxNumIdx = 0
def setMaxIdxAndNum(self):
self.maxNum = 0
self.maxNumIdx = 0
for i, n in enumerate(self.nums):
if self.maxNum < n:
self.maxNum = n
self.maxNumIdx = i
def getMaxNum(self):
return self.maxNum
def getMaxIdx(self):
return self.maxNumIdx
세번째 파일
modeMod
import maxMode
class ModeAlgorithm:
def __init__(self,ns, mn):
self.nums = ns
self.maxNum = mn
self.indexes = []
def setIndexList(self):
self.indexes = [0 for i in range(self.maxNum + 1)]
for n in self.nums:
self.indexes[n] = self.indexes[n] + 1
def getIndexList(self):
# 초기화가 되지 않은경우 초기화 해주는거고
if sum(self.indexes) == 0:
return None
# 초기화가 되어있는 경우
else:
return self.indexes
def printAges(self):
n = 1
while True:
maxAlo = maxMode.MaxAlgorithm(self.indexes)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxIdx()
# 초기화가안된경우
if maxNum ==0:
break
# {n:0>3} 총 3자리를 채워주되 왼쪽정렬을 해준다는 의미
print(f'[{n:0>3}] {maxNumIdx}세 빈도수: {maxNum} \t',end='')
print('+' * maxNum)
self.indexes[maxNumIdx] = 0
n += 1
300x250
'개발일지 > 임시카테고리' 카테고리의 다른 글
파이썬 근사값 알고리즘으로 수심에 가까운 수온출력 (0) | 2022.05.22 |
---|---|
파이썬 순위알고리즘2 숫자,아스키코드를 숫자 전환하여 순위비교 (0) | 2022.05.22 |
제로베이스 데이터사이언티스트 3기 1달차 4주차를 마치며 (1차탈락위기) (0) | 2022.05.22 |
**파이썬 재귀 알고리즘으로 1년의 매출 증감액 표시 (재귀 알고리즘 기초원리) (0) | 2022.05.22 |
파이썬 최대값 알고리즘 (0) | 2022.05.21 |