Python 266

[Python] 명령행 인자 전달 - 1

개요 Python 코드는 아래와 같은 python 명령어로 직접 실행시킬 수 있다. python 이 때 명령어 실행 시 인자값을 전달하여 Python 코드 내에서 사용할 수 있다. 이 글에서는 명령행 인자값을 전달하여 사용하는 방법을 간단히 정리한다. sys.argv python 명령어 뒤로 전달한 문자열은 공백을 기준으로 sys.argv 리스트의 원소로 저장된다. 실제로 그런지 sys.argv를 그대로 출력하는 코드를 실행해본다. ## argv_test.py import sys print(sys.argv) python 명령어 뒤로 전달된 문자열이 나열된 것을 알 수 있다. 이 때 실행할 python 파일 이름도 sys.argv에 저장된 것을 확인할 수 있다. 따라서 명령행 인자에 접근하거나 사용할 때는..

Python 2023.02.11

[Python] __init__.py

__init__.py Python에서 하나의 Python 파일(*. py)을 모듈(Module)이라고 한다. 그리고 모듈의 집합을 패키지(Package)라고 한다. __init__.py 파일은 디렉터리가 파이썬 패키지의 일부임을 알려주는 역할을 하는데, 여러 Python 모듈을 import 하는 메커니즘을 제공한다. Python 3.3 이후부터는 필수적인 파일이 아니게 되었으나 하위 버전 간의 호환성과 패키지의 명확성을 위해 생성하는 것을 권장한다. 이 글에서는 __init__.py 작성 방법을 정리해둔다. (Python 3.3 미만에서는 정상적으로 동작하지 않을 수 있다.) 예제 예시로 사용할 Package의 구조와 내용은 아래와 같다. ./shape/area.py PI = 3.14 # 원의 면적 de..

Python 2023.02.10

[Python] 시스템 명령어 실행

subprocess 새로운 프로세스를 생성하고, 프로세스의 입출력 및 에러 결과에 대한 반환값을 얻을 수 있도록 하는 모듈이다. 파이썬 코드를 통해 다른 프로세스를 실행하고, 그 과정에서 발생하는 데이터의 입출력을 제어할 수 있다. os.system, os.spawn* 모듈을 대체한다. 이 글에서는 subprocess 모듈의 사용방법을 간단히 정리한다. 참고로 Linux 환경에서 실행할 것이다. run 매개변수로 전달받은 명령어를 실행하는 가장 일반적인 함수이다. 명령이 완료되면 CompletedProcess 인스턴스를 반환한다. subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, sh..

Python 2023.02.08

[Python] Pandas - DataFrame 컬럼 형변환

개요 Pandas DataFrame의 데이터 타입을 변환할 때는 astype 함수를 사용한다. astype 함수는 DataFrame 컬럼의 데이터 타입 변경할 때에도 사용하는데 방법을 적어둔다. 단일 컬럼 형변환 다음과 같이 object 형으로 구성된 DataFrame이 있다고 하자. df= pd.DataFrame({'col_str_1': ['1', '2', '3'], 'col_str_2': ['4', '5', '6'], 'col_str_3': ['7.0', '8.1', '9.2']}) df.dtypes # 실행 결과 col_str_1 object col_str_2 object col_str_3 object dtype: object 데이터 중 col_str_1 컬럼을 int 형으로 변경해 본다. 변경할 ..

[Python] Github/GitLab에 저장된 파일 읽기

개요 Github/GitLab 저장되어 있는 파일을 Python을 이용해 읽어 들이려고 한다. 저장소를 별도 공간에 내려받지 않고 읽어보자. 예시 저장소 https://github.com/jinyuo/branch_test 에 저장되어 있는 test.csv 파일을 읽어본다. 저장소는 Public이라고 가정한다. 코드 http/https를 통해 파일에 접근할 수 있기 때문에 requests를 이용한다. 파일의 raw 데이터를 읽어야 하므로 사진의 Raw 버튼을 이용해 URL을 얻어야 한다. 예시 파일의 raw 데이터는 https://github.com/jinyuo/branch_test/raw/main/test.csv 에 저장되어 있다. 코드 접근할 URL에 http GET 요청을 한다. 요청한 데이터는 re..

Python 2023.01.29

[Python] Pandas - DataFrame 랜덤 추출 (샘플링)

개요 2023.01.22 - [Python] 리스트 랜덤 추출 (샘플링)와 비슷하게 이 글에서는 DataFrame에서 데이터를 무작위로 추출하는 방법에 대해 알아본다. DataFrame.sample DataFrame에서 무작위로 몇 개의 값을 출력하는 함수이다. DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None, ignore_index=False) 매개변수는 다음과 같다. n : 추출할 개수. frac 매개변수와 동시에 사용할 수 없다. frac : 추출할 비율. 1 이하의 값을 설정하며 n과 동시에 사용할 수 없다. replace : 중복 샘플링 허용 여부. weight : 샘플링할 데..

[Python] Pandas - DataFrame 문자열 포함 여부 확인

개요 DataFrame에서 특정 문자열과 일치하거나 포함하는 데이터를 찾기 위한 방법을 정리한다. 예시 데이터는 다음과 같다. ## importing modules import numpy as np import pandas as pd ## creating a pandas DataFrame with strings, NaN, digit df = pd.DataFrame({ 'id': [1, 2, 3, 4, 5, 6, 7] , 'fruit': ['apple', 'PERSIMON', 'grapes', 'mango', 'peach and perl', np.NaN, '1004'] }) 문자열 일치 일치 여부는 비교 연산자 ==을 사용하여 확인할 수 있다. df['fruit'] == 'apple' # 실행 결과 0 T..

[Python] Pandas - 문자열 컬럼 분할 및 다중 컬럼 추가

개요 데이터를 전처리하다 보면 문자열 컬럼을 분할하여 컬럼을 여러 개 추가해야 하는 경우가 많다. 이 글에서는 아래 데이터를 이용해 주소 컬럼을 분할해 도시와 구로 추가하는 방법을 몇 가지 정리한다. df = pd.DataFrame( {"이름":["A", "B", "C", "D"], "나이":["10", "15", "42", "22"], "주소":["서울;강동구", "인천;연수구", "안양;동안구", "부산;수영구"]} ) 반복문 DataFrame 인덱서를 이용해 반복적으로 셀에 접근하여 데이터를 처리하는 방식이다. for i in df.index: df[['도시', '구']] = df.loc[i, '주소'].split(';') 데이터양이 적을 때는 사용해도 괜찮지만, 반복문으로 처리하기 때문에 데이터양..

[Python] 여러 구분자로 문자열 자르기

개요 "100-200*300-500+20" 위와 같은 문자열이 있다고 했을 때, 숫자 값만 저장하고 싶다. 구분자가 -, *, + 와 같이 여러 개일 때 자르는 방법을 정리한다. 구분자 통일 replace 함수를 이용해 여러 구분자를 한 가지로 치환한다. data_val = "100-200*300-500+20" # 구분자 통일 data_val = data_val.replace('*', '-').replace('+', '-') # 문자열 분할 list_val = data_val.split('-') print(data_val) print(list_val) re.split 정규식을 다룰 때 사용하는 re 모듈에도 split 함수를 지원한다. re.split 함수에 구분자 패턴과 분할할 문자열을 지정하여 사용한..

Python 2023.01.24

[Python] 리스트 랜덤 추출 (샘플링)

개요 리스트 내 요소를 무작위로 추출하는 방법에 대해 알아본다. random Python 표준 라이브러리로 의사 난수 생성기를 구현한다. 별도 설치 없이 import 하여 사용할 수 있다. import random 하나만 추출 random.choice 함수를 리스트 내 임의의 요소 하나를 반환한다. 다만 매개변수로 전달한 리스트가 비어있으면 IndexError를 발생시킨다. random.choice(range(10)) # 실행 결과 7 중복 허용하면서 여러 개 추출 random.choices 함수는 리스트 내 k개의 요소를 선택해 리스트로 반환한다. 선택 시 값 중복을 허용한다. random.choices(range(10), k=5) # 참고 문서 [8, 8, 2, 2, 0] Python 3.6부터 지원..

Python 2023.01.22