9-2. Python으로 상관분석하기 (ANOVA검정)
·
스포츠 AI·빅데이터(2024~)/빅데이터기반 스포츠경기분석
*검정 주제: 프로야구에서 장타율에 따른 승률 분석 1. 데이터 불러오기(경기데이터.xlsx)import pandas as pd#데이터불러오기data = pd.read_excel("경기데이터.xlsx", sheet_name = "프로야구")data.head() 2. 장타율 범주화* 장타율 데이터를 범주화 시키는 이유는,  ANOVA 검정 자체가 연속형 변수와 범주형 변수 사이의 관계를 분석하기 위한 방법인데장타율(연속형)  승률(연속형) 두 변수 모두 연속형이기 때문에 장타율을 범주형 변수로 바꿔주기 위함!** ANOVA 분석예시) 1,2,3반의 수학 점수 비교  / 귀무가설: 세 반의 평균점수가 같다.import numpy as np#장타율을 범주화 시키기data['장타율_zscore'] =..
9-1. Python으로 상관분석하기 (t검정)
·
스포츠 AI·빅데이터(2024~)/빅데이터기반 스포츠경기분석
* 검정 주제: 프로배구에서 승패에 따른 상대범실1. 데이터 불러오기(경기데이터.xlsx)import pandas as pddata = pd.read_excel("경기데이터.xlsx", sheet_name = "프로배구") #데이터불러오기data.head()2. 등분산성 검증(두 집단의 분산이 동일한지)from scipy import statswin_errors = data.상대범실[data.승패 == 1] # 승리 시 상대범실loss_errors = data.상대범실[data.승패 == 0] # 패배 시 상대범실# Levene's test 수행: scipy.stats 모듈의 levene 함수를 사용하여 등분산 검정을 수행합니다.statistic, p_value = stats.levene(w..
[백준] 1010번 다리놓기
·
Algorithm/백준
1. 문제 2. 소스코드 #ver.1 T = int(input()) def nCk(n,k): numerator = 1 denominator = 1 for i in range(1, k+1): denominator *= i numerator *= n+1-i return numerator/denominator for _ in range(T): k, n = map(int,input().split()) print(int(nCk(n,k))) #ver.2 import math T = int(input()) for _ in range(T): k, n = map(int,input().split()) result = math.factorial(n) // (math.factorial(k)*math.factorial(n-k)..
[백준] 10989 수 정렬하기 3
·
Algorithm/백준
#백준 10989 수 정렬하기 3 1. 시간초과 코드 n = int(input()) result = [] for i in range(n): a = int(input()) result.append(a) result.sort() for i in range(n): print(result[i]) - for문 속에서 append를 사용하게 되면 메모리 재할당이 이루어져서 메모리 사용이 비효율적이다 이 문제는 시간&메모리 제한이 엄격하기 때문에 이 점을 고려하여 10000크기의 배열을 선언해주어 배열만큼의 메모리만 사용하도록 코드를 변경하였다. 2. [0]*10001 배열 사용 import sys N = int(input()) nums = [0]*10001 for _ in range(N): nums[int(sys...
[백준] 10816 숫자 카드 2와 Python 빈도수 계산
·
Algorithm/백준
#백준 10816 숫자 카드2 1. Counter 이용 from collections import Counter N = int(input()) card1 = list(map(int, input().split())) cnt = Counter(card1) M = int(input()) card2 = list(map(int, input().split())) for i in card2: if i in cnt: print(cnt[i],end=' ') else: print(0, end=' ') 1.1 Counter from collections import Counter list1 = ['A','B','C'] list2 = ['B','B','C'] cnt = Counter(list1) #cnt = ({'A':1, ..
[백준] 11866 요세푸스 문제 0과 Python deque
·
Algorithm/백준
#백준 11866 1. 처음에 문제를 읽고 원형linked list를 떠올렸다. 2. 아직 linked list는 익숙하지가 않아서 구글링을 하던중 deque를 사용하는 사람들이 대다수였다. from collections import deque n, k = map(int,input().split()) deq = deque([]) for i in range(1, n + 1): deq.append(i) print(''.format(deq.pop())) else: print('{},'.format(deq.pop()), end=' ') - 이건 내가 작성한 코드( deque의 rotate사용, 92ms) - append로 사용하면 이중 반복문이 되면서 시간이 늘어났다! - 틀렸습니다는 print( end = '..
[백준] 2108 통계학 Python Counter모듈
·
Algorithm/백준
#2108 통계학 1. from collections import Counter 모듈 사용 - Counter()를 사용하면 다음과 같이 빈도수와 리스트를 dictionary 형태로 저장해준다. - most_common()을 사용하면 빈도수로 정렬하고 dictionary를 list[tuple()] 형태로 저장해준다. from collections import Counter colors = Counter(['blue', 'green', 'red', 'blue','red','blue']) print(colors) # Counter({'blue': 3, 'red': 2, 'green': 1}) print(colors.most_common()) # [('red', 3), ('blue', 2), ('green', ..
[백준] 1920 수 찾기와 Python 이진탐색(Binary Search)
·
Algorithm/백준
#1920 수찾기 1. 시간초과 코드(매우매우 직관적인 코드) import sys input = sys.stdin.readline() n = int(input) a = list(map(int,input.split())) m = int(input) x = list(map(int, input.split())) for i in range (n): if m_arr[i] in n_arr: print(1) else: print(0) 2. 이진탐색 이용(576ms) import sys def BinarySearch(a,x): start = 0 end = len(a)-1 while starta[mid]: start = mid+1 else: end = mid-1 return 0 n = int(input()) a = li..
[사소한 궁금증2] Python에서 list(map())과 map()의 차이
·
Algorithm/백준
1. map()함수 ==> 반복가능한 자료형을 원하는 자료형으로 mapping해줌 ==> mapping후 map 객체로 반환 2. list(map()) ==> map객체를 list 형태로 바꿔줌 (ps. 백준 4153번을 풀다가 map에서 list로 변환해주는 과정이 없으면 오류가 난다는 것을 깨닫고 쓰는 글)
[사소한 궁금증1] Python에서 input()과 sys.stdin.readline()의 차이
·
Algorithm/백준
백준 10814 나이순정렬 처음에 1번코드로 실행했는데 결과는 맞았지만 시간이 무진장 오래걸린다... 그래서 좀 더 나은 방법을 찾던중 예전부터 계속 봐왔던 sys를 이용해보았다. 입력 데이터가 많아질수록 시간차이가 많이 난다고 이론적으로는 알고있었지만, 실제로 적용하니깐 정말 다르다...! 앞으로도 sys를 사용할예정...!