zenn.skin 무료버전 배포중!
자세히보기

Python 68

Python/Syntax
[JupyterNoteBook] 다른 주피터 노트북으로 셀을 복사

JupyterNoteBook을 사용하다 보면 하나의 노트북에서 다른 노트북으로 복사를 해야하는 상황이 있습니다. 명령모드에서 c, v, x를 사용하면 해당하는 노트북에서만 복사, 붙여넣기, 자르기만 되고 다른 노트북으로의 이동은 불가능합니다. 명령모드에서 Ctrl+C, Ctrl+V(mac의 경우 Cmd+C, Cmd+V)를 사용하면 하나의 노트북에서 다른 노트북으로 셀을 복사, 붙여넣기가 가능합니다! 추가로! mac의 경우 Cmd를 누르고 셀을 선택해도 복수 선택이 안되므로 명령 모드에서 Shift를 누른 상태에서 방향키를 이용해 셀을 선택해야 합니다 이렇게 셀들을 선택한 후 Ctrl+C를 누른 후! 다른 셀에서 Ctrl+V를 누르면 셀들이 복사됩니다! 복사된 셀들은 실행된 상태는 아니기 때문에 별도로 실..

Python/Syntax
[Pandas] DataFrame 열 순서 변경

DataFrame의 열 순서를 변경하는 메소드는 별도로 없어서 열 순서를 변경하는 방법을 정리해보려 합니다. 1. 열의 순서를 직접적으로 변경 exam_data = {'수학': [90, 80, 70], '영어': [98, 89, 95], '음악': [11, 22, 33], '체육': [44, 55, 66]} exam_data = pd.DataFrame(exam_data) col = ['체육', '수학', '영어', '음악'] exam_data = exam_data[col] 열의 순서를 직접 설정하여 변경하는 방법입니다. 열의 개수가 많지 않으면 사용할 수 있지만 개수가 많아지면 사 용하기 힘들다는 단점이 있습니다. 2. reindex를 이용한 방법 exam_data = {'수학': [90, 80, 70]..

Python/Syntax
[Python] 문자열 자료형을 datetime, date 자료형으로 변환

from datetime import datetime date = '2022-05-26' date_time = datetime.strptime(date, "%Y-%m-%d") only_date = date_time.date() print(only_date) print(type(only_date)) 1) strptime - datetime.datetime.strptime을 사용하면 문자열 객체를 날짜와 관련된 자료형(datetime, date)으로 변환할 수 있다 - datetime.strptime(date_string: str, format: str) -> datetime - date_string : 문자열로 저장된 날짜 정보 - format : 입력된 문자열 date_string을 어떻게 읽을지(파싱할..

CS/알고리즘
[Python] 피보나치 수열과 Dynamic Programming 기초

1. 피보나치 수열 피보나치 수는 첫째 항과 둘째 항이 1이고 뒤에 나오는 모든 항이 앞 두 항의 합인 수열이다. 앞의 두항의 합만 구하면 다음 항을 구할 수 있으므로 코드로 구현하면 다음과 같이 간단하게 표현할 수 있다. N = int(input()) def fibo(x): if x == 0: return 0 if x == 1: return 1 return fib(x - 1) + fib(x - 2) print(fibo(N)) 하지만 이 코드에는 큰 문제점이 있는데... 앞서 구했던 피보나치 수의 값을 기억하질 못한다... N=5라고 할 때 피보나치 수를 구하면 위와 같다. 동일한 계산을 여러 번하는데 전에 이미 값을 구했는데도 하위 연산을 하면서 값을 다시 구한다. 값이 하나 증가할 때마다 연산의 횟수..

CS/알고리즘
[Python] bisect 라이브러리 (lower bound, upper bound)

bisect 라이브러리에 있는 bisect_left, bisect_right에 대해 공부하려 합니다. 1. bisect? - 정렬된 리스트에서 이진 탐색을 이용해 데이터를 찾는 메서드를 제공 - O(logN)의 시간 복잡도로 데이터를 찾을 수 있다 - bisect_left는 lower bound로, bisect_right는 upper_bound로 사용할 수 있다 2. lower bound와 upper bound bisect 라이브러리에서 제공하는 메서드는 이진 탐색과 완전히 일치하지는 않고 조금 차이점이 있다. 위에서 말한 것처럼 bisect_left는 lower bound 알고리즘을, bisect_right는 upper bound 알고리즘을 수행한다. - binary search: 찾고자 하는 값이 존..

Python/Syntax
[Python] 논리 연산자와 Bitwise 연산자 차이점

Python을 공부하면서 Bitwise 연산자를 사용할 일이 많지 않아 논리 연산자와의 차이점을 잘 몰랐는데 알고리즘 문제를 풀며 공부할 기회가 생겨 정리를 해보려 한다. 1. 논리 연산자와 bitwise 연산자의 값 비교 1) 홀수인 경우 AND, OR 연산 # AND 연산, & 연산 print(21 and 1) # 1 print(21 and 0) # 0 print(21 & 1) # 1 print(21 & 0) # 0 # OR 연산, | 연산 print(21 or 1) # 21 print(21 or 0) # 21 print(21 | 1) # 21 print(21 | 0) # 21 2) 짝수인 경우 AND, OR 연산 # AND 연산, & 연산 print(20 and 1) # 1 print(20 and ..

Python/Syntax
[Python] Bitwise 연산자를 이용한 홀/짝 판단

(오늘 게시물에서 사용하는 AND, OR 연산자는 모두 Bitwise 연산자를 의미한다.) 홀수와 짝수를 판단할 때 2로 나눈 나머지를 이용해 판단할 수도 있지만 Bitwise 연산자를 이용해서 구하는 방법도 있다. 1. 2의 나머지를 이용한 홀수, 짝수 판단 num = int(input()) if num % 2 == 0: # 짝수인 경우 print("Even") elif num % 2 == 1: # 홀수인 경우 print("Odd") 2. Bitwise 연산자를 이용한 홀수, 짝수 판단 - Bitwise 연산자를 이용해 홀수와 짝수를 판단하려면 우선 AND연산과 XOR연산에 대해 알아야 한다. ① AND 연산자(&) 0 1 0 0 0 1 0 1 정수를 2진수를 이용해 나타내면 짝수인 경우 마지막 자리가..

CS/알고리즘
[Python] 이진탐색(Binary Search)

1. 이진탐색? - 이진탐색은 정렬되어 있는 선형자료구조에서 사용할 수 있는 탐색 방법이다. - 정렬되지 않은 자료형의 경우 처음부터 차례대로 값을 비교해야하기 때문에 O(N)의 시간복잡도를 갖는다. - 반면 자료가 정렬되어 있는 경우 이진탐색을 통해 O(logN)의 시간복잡도로 값을 찾을 수 있다. - 이진탐색은 범위를 주면 해당 범위 중간값을 기준으로 찾고자 하는 값이 중간값보다 큰지 작은지를 판단하는 방법이다. - ex) 책에서 원하는 페이지 번호를 찾으려 할 때 일단 책을 펴고 찾고자 하는 페이지 번호가 더 작으면 앞부분을, 찾고자 하는 페이지 번호가 더 크면 뒷부분을 보는 것과 같다. 2. 이진탐색 알고리즘 - 찾고자 하는 값을 target이라 한다 - 리스트 nums가 주어지면 가장 작은 인덱..

Python/Syntax
[Pandas] DataFrame - 2 (행/열 추가, 값 선택/변경, 전치)

1. 행/열의 추가 1) 행의 추가 - DataFrame의 loc() 메서드를 이용해 행을 추가 - DataFrame.loc['새로운 행 이름'] = value or List - value를 전달할 경우 해당 행에 모두 동일한 값이 들어간다 - List를 전달할 경우 행에 값이 차례로 들어간다 - 전달되는 리스트의 개수는 열의 개수와 동일해야 한다 ① 값의 추가 df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]], index=list('xyz'), columns=list('ABCDE')) df.loc['v'] = 30 print(df) ② 리스트의 추가 df.loc['w'] = [16, 17, 18, 19, 20] pri..