python 메모

python 메모

[python] First-Class Function과 Closure, Decorator

Decorator를 사용하기 위해 공부했던 내용을 정리해두고자 한다. Decorator를 사용하기 위해 이해해야 할 개념은 다음과 같다. 일급함수(first-class function) 클로저(Closure) 데코레이터(Decorator) 1. 일급 함수 (1) 일급 함수의 개념 일급 함수는 컴퓨터 프로그래밍 언어 디자인에서 일급 객체(first-class object)의 함수 버전 개념이다. 위키피디아에 따르면 일급 객체는 '일반적으로 적용 가능한 연산을 모두 지원하는 객채'를 의미하며, 객체에 대한 구체적인 정의는 다음과 같다. 모든 요소는 함수의 실제 매개변수가 될 수 있다. 모든 요소는 함수의 반환 값이 될 수 있다. 모든 요소는 할당 명령문(assignments statements)의 대상(su..

python 메모

[matplotlib] subplot 그리기

matplotlib.pyplot을 활용하여 여러개의 subplot을 사용하는 방법은 간단하다. 다음과 같은 데이터가 있고 각 label별 class의 분포를 하나의 figure에서 표현하고자 한다. plt.subplot은 각 subplot을 그릴 때 호출하면 되며 (nrow, ncolumns, index) 값을 넣어주면 된다. nrows: 총 row 개수 ncolumns: 총 column 개수 index: 해당 subplot이 몇 번째 subplot인지 plt.figure(figsize=(16,12)) for plot_idx, col in enumerate(nd.columns): d = nd[col] c_val = d.value_counts().to_dict() n_dict = dict() for i, ..

python 메모

[python] regex 메모

regexr.com의 regex cheatsheet은 여기가 유용하다. 1) re.split() 특정 기호 그룹으로 문자열을 나눌 때 사용한다 # input: '100,200,300.400' # output: '100 200 300 400' import re regex_pattern = r"[,.]" s = '100,200,300.400' ' '.join(re.split(regex_patter, s)) 2) re.group() regex pattern에 매치되는 문자열 리스트를 얻고 싶을 때 사용한다. import re s = 'useful@python.codes' m = re.match(r'(\w+)@(\w+)\.(\w+)', s) print(m) >>> m.groups() >>> ('useful', ..

python 메모

[python] 봐두면 유용할 수도 있는 문자열 built-in functions

파이썬에서 문자열 관련 built-in function들 중 알아둔다면 유용할 수도 있는 함수들이 있다. 실제 쓸일이 있을지는 모르겠다. 1. String Validation 1) .isalnum() 'ab123'.isalnum() >>> True '#ab123'.isalnum() >>> False 2) .isalpha() 'abCD'.isalpha() >>> True 'abCD7'.isalpha() >>> False 3) .isdigit() '1234'.isdigit() >>> True '1234F'.isdigit() >>> False 4) .islower() 'abcd123#@'.islower() >>> True 'AbCd123#@'.islower() >>> False 5) .isupper() 'AB..

python 메모

[python] itertools

1) itertools.product() itertools.product()는 두개 이상의 리스트(or 집합) 끼리의 데카르트 곱(cartesian product)를 계산하여 iterator로 반환해준다. Cartesian Product는 아래와 같이 정의된다. $$ A \times B = \{(x,y) | \ x \in A \ and \ y \in B \} $$ import itertools A = [1,2,3] list(itertools.product(A, repeat=2)) >>>> [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] print(itertools.product(A, repeat=2)) >>>> A = [[..

python 메모

[python] any(), all()

1) any() any()는 입력으로 받은 iterable 중 적어도 하나의 원소가 True이면 True를, 모두 False면 False를 출력한다. any([1,2,3]) >>>> True any([1>0, 1==0, 1>>> True any([1>> False 2) all() all()은 입력으로 받은 iterable의 모든 원소가 True이면 True를, 적어도 하나가 False라며 False를 출력한다. all([1,2,3]) >>>> True all([1,2,False]) >>>> False all([1,2,0]) >>>> False all(['a'>> True

python 메모

[pandas] DataFrame을 string으로 출력하기

dataframe을 이미지가 아닌 string으로 print하고 싶을 때 아래 코드로 출력 가능하다. 다음과 같은 데이터가 있다고 하자. jupyter notebook 등에서 print하는 방법은 다음과 같다. with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(df) >>> col 0 a 1 a 2 b 3 a 4 a 5 a 6 b 7 a 8 a 9 b 10 b 11 c ...

python 메모

[pandas] 항목별 개수(value_counts) 그래프 생성

pandas에서 항목별 개수를 세고 matplotlib없이 바로 histogram을 그릴 수 있다. 다음과 같은 데이터가 있다고 하자. data.shape >>> (610292,1) data >>> col 0 a 1 a 2 a 3 a 4 a 5 a 6 b 7 a 8 b 9 a 10 c 11 b 12 a ... 아래 코드로 항목별 개수 그래프를 생성할 수 있다. CountStatus = pd.value_counts(data['col'].values, sort=True) CountStatus.plot.bar() CountStatus.plot.bar(grid=True, figsize=(10,8), fontsize=15) # figsize, fontsize 조정

python 메모

[python] url로 json 데이터 받아오기

json 데이터를 url로 받아올 수 있다. 파일을 받아서 이를 서버에 올리고 import 하는 것 보다 훨씬 편하다. requests 라이브러리를 사용하면 가능하다. import requests url = 'https://korquad.github.io/dataset/KorQuAD_v1.0_dev.json' data = requests.get(url).json()

python 메모

[tqdm] tqdm에서 새로운 라인 없이 한 라인으로 출력하기

tqdm을 그냥 쓸 때 종종 실행시간에 따라 계속 새로운 라인으로 출력되는 경우가 발생한다. tqdm을 쓰는 이유가 loop 진행정도를 한줄로 출력해서 보기 위함인데 이를 위해서는 leave=True를 넣어주면 된다. tqdm으로 loop progress 한 줄로 출력하기 from tqdm import tqdm for i in tqdm(range(100), leave=True): print(i) 실행시간이 오래걸리는 loop이더라도 한 라인에서 진행사항이 뜨는 것을 확인할 수 있다

python 메모

[numpy] stack 결과

1) np.vstack & np.stack t = [[1, 2, 3], [4, 5, 6]] np.vstack(t) >> array([[1, 2, 3], [4, 5, 6]]) np.stack(t, axis=0) >> array([[1, 2, 3], [4, 5, 6]]) 2) np.hstack & np.stack t = [[1, 2, 3], [4, 5, 6]] np.hstack(t) >> array([1, 2, 3, 4, 5, 6]) np.stack(t, axis=1) >> array([[1, 4], [2, 5], [3, 6]])

python 메모

[pandas] 배열에 포함된 row만 남기기

pandas를 통해 특정 조건에 만족하는 값들을 남기는 경우 apply, lambda를 사용할 수도 있지만, 다른 방법도 있어서 정리하고자 한다. isin()을 활용한 배열에 포함된 row만 남기기 다음과 같은 데이터가 있다고 하자 data = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[-1,3,-3,2,5,6] }) a b c 0 A 1 -1 1 A 2 3 2 B 5 -3 3 B 5 2 4 B 4 5 5 C 6 6 이때 항목 $a$의 값이 배열 $['B','C']$에 포함된 row만 남기고 싶다고 할때, isin()을 활용하면 된다. data['a'].isin(['B', 'C']) 0 False 1 False 2 True..

python 메모

[pandas] 다중 컬럼(multiple columns) apply 사용하기

pandas는 boolean 연산을 지원하기 때문에 column별 apply를 적용하여 데이터를 다루면 실행시간이 훨씬 빠르며 코드가 간단하다. 다중컬럼을 적용하는 방법은 몇 가지가 있지만 가장 직관적이며 기억하기 쉬운 방법을 소개하고자 한다. 1. 다중 컬럼(multiple columns)에 apply 사용하기 다음과 같은 데이터가 있다고 하자. data = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[-1,3,-3,2,5,6] }) a b c 0 A 1 -1 1 A 2 3 2 B 5 -3 3 B 5 2 4 B 4 5 5 C 6 6 이때 항목 $b,c$가 모두 양수인 데이터만 남기고 싶다고 하자. $b$와 $c$ 컬럼을 모..

python 메모

[pandas] groupby를 활용한 그룹별 데이터 목록 리스트화

0. pandas groupby A groupby operation involves some combination of splitting the object, applying a function, and combining the results. This can be used to group large amounts of data and compute operations on these groups. pandas groupby 메소드는 전체 데이터를 그룹별로 나누고(splitting), 각 그룹별로 동일한 함수를 적용하고(applying), 그 결과를 하나로 합쳐(combine) 결과를 return 한다. - pandas groupby documentation - pandas groupby user gui..

python 메모

jupyter notebook 자주 쓰는 명령어

1. 가상환경 추가 window랑 linux 동일함 virtualenv [사용자 지정 이름 ex. tf-codes] --python=python3 2. 가상환경 실행 1) linux source (경로)/(사용자 지정 이름)/bin/activate # ex. source venves/tf-codes/bin/activate 2) window(cmd 창) .\(경로)\(사용자 지정 이름)\Scripts\activate # ex. .\venvs\tf-codes-1\Scripts\activate 3. 가상환경 kernel 추가 window랑 linux 동일함 python -m ipykernel install --user --name [virtualEnv] --display-name "[displayKenrelN..

Fine애플
'python 메모' 카테고리의 글 목록 (3 Page)