5일차 때 풀었던 로또 문제를 풀이하는 시간을 가졌다.
csv_data = []
with open('lott.CSV') as file:
for line in file:
csv_data.append(line[:-1].split(','))
print(csv_data)
int(csv_data[0][-1])
마찬가지로 위와 같이 파일을 불러온다.
import math
def mean(num_list):
return sum(num_list)/ len(num_list)
# 편차
def dev(num_list):
m = mean(num_list)
return [x-m for x in num_list]
def var(num_list):
n = len(num_list)
d = dev(num_list)
return sum([x * x for x in d])/(n - 1)
# 표준편차
def stdev(num_list):
return math.sqrt(var(num_list))
자주 쓰일듯 싶은 표준편차와 편차 분산 평균등을 함수화하여
가장 상단에 명시를 해줌으로써 어디서든 쓸 수 있는 상황이다.
우리가 쓰는 이 데이터는 로또의 숫자가 str값으로 되어있다.
그렇기 때문에 그 str데이터를 int데이터로 만들어 주어야한다.
for game in csv_data:
for i, num in enumerate(game):
game[i] = int(num)
enumerate를 이용해서 csv_data의 for문에서 도는
리스트 game을 인덱스 번호를 참조해서 각각의 인덱스에
있는 값들을 num 값들을 int로 변환하여 넣어준다.
이제 로또 번호는 우리가 원하는 것 처럼 계산을 할 수 있는
상황이 된 것이다.
num_freq2 = [0]*45
for i in range(len(csv_data)):
for j in range(len(csv_data[i])):
n = csv_data[i][j]
num_freq2[n - 1] = num_freq2[n - 1] + 1
print(num_freq2[:10])
새로운 리스트를 만들어주게 되는데 빈값이 1~45가 들어갈 만큼 있는 리스트를 생성하고
for문을 돌면서 값끼리 더해준다. 그리고 최상위 10개까지 본다.
이제 평균 값과 표준편차를 알아볼 시간이다.
위의 함수를 이용해서 바로 뽑아낼 수 있다.
for i, game in enumerate(csv_data):
print(i, mean(game), stdev(game))