본문 바로가기

분류 전체보기55

결측치에 그룹별 최빈값 대입하기 결측치에 그룹별 최빈값 넣기¶ In [1]: import numpy as np import pandas as pd In [73]: # 데이터프레임 생성 df1 = pd.DataFrame({'col1' : list('a' * 4 + 'b' * 4), 'col2' : [np.nan, 1, 1, 2, np.nan, 3, 2, 1]}) df1 Out[73]: col1 col2 0 a NaN 1 a 1.0 2 a 1.0 3 a 2.0 4 b NaN 5 b 3.0 6 b 2.0 7 b 1.0 In [70]: # a 그룹에서는 최빈값이 1 하나만 나오지만, b 그룹에서는 최빈값이 여럿이라 1, 2, 3 모두 출력 df1.groupby('col1')['col2'].apply(pd.Series.mode) Out[70]:.. 2022. 11. 27.
에라토스테네스의 체 (Python) 자연수 n 이하 소수의 개수를 출력하는 함수를 에라토스테네스의 체로 구현하는 방법이다. 에라토스테네스의 체는 다음과 같은 순서로 소수를 걸러낸다. 현재 남아있는 수 중 가장 작은 수는 소수 (크기 순으로 정렬되어 있고 걸러지지 않았으니) 이 수를 p라고 하면 2p 부터 n 까지 남아있는 p의 배수를 전부 제거한다. 현재 남아있는 가장 작은 수가 $\sqrt{n}$ 보다 커지면 정지한다. $\sqrt{n}$ 미만까지 직접 나눠서 나눠지는 숫자를 빼는 방식도 가능하지만, n이 커지면 연산 시간이 너무 늘어난다. 따라서 집합이나 리스트의 인덱스로 접근하는 것이 좋다. - 집합(set) def num_primes1(n) : nums = set(range(2, n+1)) root_n = int(n ** (1/2).. 2022. 11. 22.
백준 10870번 : 피보나치 수 5 (Python) https://www.acmicpc.net/problem/10870 def fib(n) : if n == 0 or n == 1 : return n else : return fib(n - 1) + fib(n - 2) n = int(input()) print(fib(n)) 가장 기본적인 재귀 알고리즘 문제이다. 함수의 출력값으로 그 함수를 다시 주면 알아서 답이 나올때까지 계산한다. 참고로 마지막에 print를 안 붙이고 fib(n)만 입력하면 백준에선 틀렸다고 채점한다. 2022. 11. 20.
zip 함수의 활용 zip() 함수는 여러 개의 반복 가능한(iterable) 객체를 인자로 받고, 순서대로 튜플로 엮는 함수이다. In [9]: a = [1, 2, 3] b = [7, 8, 9] for elements in zip(a, b) : print(elements) (1, 7) (2, 8) (3, 9) In [10]: # 따로 출력하는 것도 가능 for i, j in zip(a, b) : print(i, j) 1 7 2 8 3 9 In [3]: # print안의 인자 앞에 *을 붙여주면 개별 요소를 출력함 print(*zip(a,b)) (1, 7) (2, 8) (3, 9) In [4]: # 셋 이상의 객체를 엮는 것도 가능 c = ('가', '나', '다') d = [-7, (0, 7), 'A'] print(*zi.. 2022. 11. 18.