TIL. python 5일차

hyuko·2023년 2월 6일
0

산대특 국비과정

목록 보기
8/9

금일은 로또 데이터를 사용해 실습

  • 4일동안 배운 개념으로 진행해봅니다.

첫번째 문제

  • 전체 회차를 통틀어 빈도수(mode): 숫자별 카운트 (몇번이나 나왔는지?)
import operator
lotto_data = []
with open('lotto.CSV') as file:
	for line in file:
    	lotto_data.append(line[:-1].split(','))
int(lotto_data[0][-1])

lista = []
for i in lotto_data:
	for e in i[:-1]:
    	lista.append(int(e))
 seta = set(lista)
 
 key_list = []
 value_list = []
 
 for i in seta:
 	key_list.append(i)
    value_list.append(lista.count(i))
 
 dict_number = dict(zip(key_list, value_list))
 dict_sorted_number = sorted(dict_number.items, key = operator.itemgetter(1), reverse = True)
 
 혹은
 dict_sorted_number = sorted(dict_number.items, 
 key = x : x[1], reverse = True)

다음은 로또의 전체 회차를 돌면서 총 빈도수 각각의 번호들이
얼마만큼이나 나왔는지 체크한다.
그리고 값을 dictionary로 빼서 정렬을 해주었다. 람다식을 이용하거나
operator를 사용해서 뽑아올 수 있다.

두번째 문제

  • 회차별 평균값과 표준편차를 구해라

mean_num = 0

for i, e in enumerate(lotto_data[:-1]):
    mean_num = int(sum(e)/ len(e))
        
    print(i + 1,'회차 평균: ', mean_num)

enumerate 를 이용해서 인덱스가 없는 for문을
인덱스를 포함해서 나오게하면서 i는 0부터 시작하기에
1회차 부터시작하는 로또기에 i는 인덱스를 나타내고 평균을
내서 옆에 나오게 해주었다.

import math
for i, e in enumerate(lotto_data[:-1]):
    for x in e :
        mean_num = int(sum(e)/ len(e))
    n = len(e)
    d = [y - mean_num for y in e] 
    stdev = math.sqrt(sum([z * z for z in d])/(n - 1))    
    print(i + 1,'회차별 표준편차',stdev)

평균을 내고 그 평균에 대한 편차 얼마나 평균에서 떨어져있는지 람다식을
이용해서 d라는 변수에 넣어주고 분산치를 구해주고 마지막으로 표준편차를
해준다

profile
백엔드 개발자 준비중

0개의 댓글