Python/라이브러리
파이썬(python) 라이브러리 - sphinx (docstirng 자동 문서화)
python 코드 내에 작성한 docstirng을 자동으로 문서화 해주는 아주 강력한 라이브러리다. def 함수명(): ''' 내용 ''' → 주석안에 특정 규칙에 맞게 작성해둔 docstring을 파싱한다. 예시 아래 예시는 Goolge Style 의 docstring 이다. (Napoleon 이라는 확장을 사용하여 파싱해야 함) 기본 docstring 형태는 알아서 찾아보도록.. 나는 개인적으로 Google Style이 가독성이 좋아서 선호한다. def convert_worksheet_to_df(workbook, sheet_name=['Sheet'], include_index=False, include_column=False): """ Excel 파일에서 원하는 Sheet를 지정해 list(Dataf..
파이썬(python) 라이브러리 - string
string 0~9 까지 숫자, a~z까지 알파벳을 일일이 적지않고 바로 가져올 수 있다. 알면 꽤 편리한 라이브러리다. import string string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_letters # 대소문자 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.digits # 숫자 0123456789 참고) 공식 문서 6.1. string — Common string operations — Python 3.4.10 documentation 6.1. string — ..
파이썬(python) 라이브러리 - heapq
heapq 파이썬에서 힙 (우선순위 큐) 자료구조를 이용할때 사용한다. C++, 자바는 우선순위 큐 자료구조를 제공하지만 파이썬은 리스트를 우선순위 큐 처럼 다룰 수 있는 함수를 제공한다. 최소 힙 (Default) heap = [] : 리스트 heapq.heappush(heap, 원소) : 힙에 하나 추가 O(logN) a = heapq.heappop(heap) : 힙에서 하나 빼서 반환 O(logN) heap[0] : 힙에서 빼지않고 값 얻기 O(1) 이미 값이 있는 리스트를 힙으로 사용하려면 변환이 필요 heapq.heapify(heap) : 변환 (리스트 → 힙) O(N) 최대 힙 튜플의 첫 번째 원소가 기준이 되는 것을 이용 heap = [] : 리스트 p = [4,3,2,5] heapq.hea..
파이썬(python) 라이브러리 - collections.deque
collections.deque 파이썬에서 queue를 이용할때 사용한다. list를 이용하면 add 연산에 O(n) 만큼의 시간이 들기 때문에 deque를 사용해야함. 데이터가 오른쪽으로 추가되고 왼쪽으로 나가는 형태 q = collections.deque() q.append() # 오른쪽으로 더하기 q.popleft() # 왼쪽으로 값 빼기 q.appendleft() # 왼쪽으로 추가 q.pop() # 오른쪽으로 빼기 q.extend() # 오른쪽으로 값 추가 (각요소를 잘라서 넣어줌) deque(['a','b','c']).extend('defg') → ['a','b','c','d','e','f','g'] append로 넣으면 'defg'로 들어가짐 q.rotate(n) n만큼 요소들을 회전시켜준다...
파이썬(python) 라이브러리 - bisect (이진탐색, 바이너리 서치, Binary Search)
이진탐색 (바이너리 서치, Binary Search) 정렬된 리스트에서 탐색 범위를 절반씩 좁혀나가며 빠르게 탐색하는 방법 특징 탐색 범위가 매우 크게 주어짐 O(n) 인 선형탐색으로는 시간초과 나는 경우 사용가능 정렬된 리스트에서 특정 값을 매우 빠르게 찾고 싶을때 사용 시간 복잡도 O(log N) 구현 1. bisect 라이브러리 사용 bisect.bisect_left(정렬된 리스트, target) 정렬된 리스트에서 target을 insert할때의 위치 bisect.bisect_right(정렬된 리스트, target) 정렬된 리스트에서 target을 insert할때의 위치+1 ※ bisect.bisect는 bisect.bisect_right와 동일함 bisect.insert() 함수는 bisect함수..
파이썬(python) 라이브러리 - collections.Counter
collections.Counter(iterbale) iterbale 객체의 각 요소의 등장 횟수를 세는 기능 리스트에 음수가 있으면 안됨 !!!!!!!!!!!!!!! import collections a = [1,2,3,1,2,3,3,4] b = collections.Counter(a) : 등장 횟수 많은것 부터 dict{값:등장횟수} 로 돌려줌 Counter({3: 3, 1: 2, 2: 2, 4: 1}) c = b.most_common() : 리스트[튜플()]로 변환하여 반환 [(3, 3), (1, 2), (2, 2), (4, 1)] d = b.elements() : 카운터된 개수만큼 요소 반환 list(d) [1, 1, 2, 2, 3, 3, 3, 4] list(b) [1, 2, 3, 4] 그럼 음수..
파이썬(python) 유용한 표준 라이브러리
표준 라이브러리 내장 함수 : sum(), min(), max(), sorted() 참고로 pow(a,b,n) 함수는 아래와 같이 작동하지만 저렇게 작성한 것 보다 훨씬 효율적으로 작동하여 시간차이 많이남. x = a**d % n 아래 참고 Why is pow(a, d, n) so much faster than a**d % n? I was trying to implement a Miller-Rabin primality test, and was puzzled why it was taking so long (> 20 seconds) for midsize numbers (~7 digits). I eventually found the following line of code to b... stackoverflo..
파이썬(python) 라이브러리 - itertools (순열, 조합, 누적합)
itertools 라이브러리 순열 : 서로다른 n개 에서 서로 다른 r개 선택하여 순서대로 나열 list(permutations(data, 선택할 개수)) from itertools import permutations a=list(permutations(data,1)) b=list(permutations(data,2)) c=list(permutations(data,3)) data = ['A','B','C'] [('A',), ('B',)] [('A', 'B'), ('B', 'A')] [] data = [1,2] [(1,), (2,)] [(1, 2), (2, 1)] [] data = ['A','B','C'] [('A',), ('B',), ('C',)] [('A', 'B'), ('A', 'C'), ('B', ..
파이썬 라이브러리 - datetime
import datetime today = datetime.datetime.today() # 2021-03-23 21:17:24.123252 today.date() # 2021-03-23 dt = datetime.datetime.now() # 2021-03-23 21:17:24.123252 dt.date() # 2021-03-23 dt.year() dt.month() dt.day() dt.time() dt.hour() dt.minute() dt.second() datetime.datetime.now() # 현재 날짜/시간 생성 datetime.datetime(2021, 4, 3, 0, 1, 10) # 특정 날짜/시간을 생성하기 time.timestamp() # 날짜/시간으로부터 타임스탬프 값 얻어오기 d..
파이썬 (python) 라이브러리 - Pandas 판다스
pandas - 링크 : pypi.org/project/pandas/ - 설치방법 : pip install pandas - 용도 : 구조화 된 (표 형식, 다차원, 잠재적으로 이기종) 및 시계열 데이터로 쉽고 직관적으로 작업 할 수 있도록 설계된 빠르고 유연하며 표현력이 뛰어난 데이터 구조를 제공 ● padas.DataFrame 생성 1. numpy ndarray (+columns, index) 0 1 2 0 1 2 3 1 4 5 6 2 7 8 9 import pandas as pd import numpy as np df = pd.DataFrame(np.array([[1, 2, 3], → 이게 하나의 행임. Excel의 가로축 [4, 5, 6], [7, 8, 9]])) df 0 1 2 0 1 2 3 1 ..