python 194

[Python] heapq - 크거나 작은 n개 데이터 추출

개요 2022.03.20 - [heapq] 최소 힙, 최대 힙 글에서 최소 힙을 제공하는 heapq 라이브러리를 살펴봤다. 위 글에서는 최솟값을 읽거나, 리스트를 heap으로 변경하는 방법을 확인했는데, heap에서 큰 값부터 n개 데이터 또는 작은 값부터 n개 데이터를 얻고 싶다. 방법을 적어둔다. nlargest - 큰 값부터 n개 값 얻기 iterable에 의해 정의된 데이터에서 가장 큰 n개 요소를 반환한다. heapq.nlargest(n, iterable, key=None) 예로 들어 0부터 10까지의 데이터에서 큰 값 세 개를 얻고 싶다면 다음과 같이 사용할 수 있다. import heapq n = 3 data = range(10) heapq.nlargest(n, data) nsmallest ..

Python 2023.07.24

[Python] Docker SDK를 통한 도커 다루기

개요 2023.07.11 - [Airflow] DockerOperator를 살펴보면서 Python을 이용해 Docker를 다룰 수 있다는 것도 알게 되었다. 그렇다면 방법을 알아보는 게 인지상정……까지는 아니지만 궁금하니 간단히 정리해보려고 한다. Docker SDK for Python Docker SDK for Python은 Docker Engine API을 사용하기 위한 Python 라이브러리다. 컨테이너 실행이나 관리와 같은 docker 명령어로 할 수 있는 모든 작업을 Python 애플리케이션 내에서 수행할 수 있게 해 준다. 공식 문서 : https://docker-py.readthedocs.io/en/stable/# 라이브러리 설치 Docker SDK를 사용하기 위해서는 라이브러리 설치가 필요..

Python 2023.07.18

[Python] Pandas - datetime64 Series를 datetime.datetime으로 변환

개요 다음과 같은 날짜 데이터로 이루어진 DataFrame이 있다고 하자. import pandas as pd import numpy as np date_str = ["2018, 1, 1", "2018, 1, 4", "2018, 1, 5", "2018, 1, 6"] df = pd.DataFrame(pd.to_datetime(date_str), columns=['diagnosis_date']) 이 날짜 데이터를 Python의 datetime 타입의 데이터를 원소로 하는 리스트로 변환하고자 다음과 같이 실행하면…… list_date = df['diagnosis_date'].values.tolist() 이런 숫자값이 나온다. 아무래도 Timestamp로 취급된 것 같다. 어떻게 해야 datetime 객체를 원..

[Python] redis 사용하기

개요 2023.06.16 - [Redis] 개념 및 설치/실행 2023.06.19 - [Redis] redis-cli로 데이터 읽고 쓰기 위 두 개 글에서 Redis를 설치하고 cli을 이용해 간단히 데이터를 읽고 써봤다. 이 글에서는 Python을 이용해 redis에 접속하고 작업을 해보려고 한다. redis 패키지 설치 Python을 이용해 redis를 사용할 때는 redis 패키지 설치가 필요하다. 필요하다면 더 좋은 성능을 위해 hiredis를 지원하도록 설치해도 된다. pip install redis # 또는 pip install redis[hiredis] redis 모듈 import redis 모듈을 import 하여 사용한다. import redis redis 서버 접속 Redis 생성자에 ..

Python 2023.06.21

[Python] pymysql.err.internalerror (1054 unknown column in 'field list' )

현상 Python으로 MySQL을 연동하여 사용 중이다. 특정 테이블에 데이터를 INSERT 하려고 했더니 아래와 같은 에러 메세지가 발생하면서 실패했다. pymysql.err.internalerror (1054 unknown column in 'field list') 어떤 부분이 문제였는지 적어둔다. 원인 원인은 크게 두 가지로 정리할 수 있다. 컬럼이 테이블에 실제로 없는 경우 테이블에 컬럼이 존재하지만 컬럼의 데이터 타입과 INSERT 할 데이터의 타입이 맞지 않는 경우 이 글의 경우에는 후자로 INT로 정의되어 있던 컬럼에 문자열 데이터를 추가하려고 했던 게 원인이었다. 해결 이 글에서는 데이터베이스 테이블의 컬럼 타입을 INT에서 VARCHAR로 변경하여 해결했다. + 조금 검색해보니 주로 Py..

Python 2023.06.05

[Python] billiard - 멀티프로세싱

개요 이전에 2023.02.19 - [Python] multiprocessing을 통해 Python으로 멀티프로세싱을 수행해 보았는데, 최근 billiard라는 다른 패키지를 사용하여 멀티프로세싱을 수행하게 되었다. 이 글에서는 billiard 패키지 사용법을 정리해 둔다. billiard Python 2.7 multiprocessing 패키지를 Fork한 패키지다. Celery에서 사용하는 패키지로 Celery 팀에 의해 유지보수되고 있다. Github : https://github.com/celery/billiard + Airflow에서 CeleryExecutor를 사용하고 있다면 추가 패키지 설치 없이 멀티프로세싱을 적용할 수 있을 것 같다. 설치 pip를 이용해 설치할 수 있다. pip insta..

Python 2023.05.27

[Python] Pandas - 여러 컬럼 추가

개요 DataFrame에 스칼라 값인 컬럼이 여럿 추가하고 싶을 때는 단순 할당을 반복하거나, import numpy as np import pandas as pd map_code_message = [ {'code':'00','return_message':'Continue'}, {'code':'01','return_message':'Switching Protocol'}, {'code':'02','return_message':'Processing'}, {'code':'03','return_message':'Early Hints'}, ] df = pd.DataFrame(map_code_message) df['server'] = 'web' df['stage_env'] = 'dev' insert 함수를 반복해서..

[Python] Pandas - Dataframe 차집합 구하기

개요 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1 (merge / join)에서 두 데이터프레임에 대한 INNER JOIN과 OUTER JOIN(left, right, full)에 대해서 살펴봤다. 이 글에서는 두 데이터프레임에 대한 LEFT ANTI JOIN, RIGHT ANTI JOIN... 즉, 차집합을 구하는 방법을 정리한다. 예시 데이터 예시로 아래의 데이터프레임 두 개를 사용하여 글을 작성한다. import pandas as pd df1 = pd.DataFrame( [ (1, 345, 'B', True), (2, 100, 'C', False), (3, 300, 'B', False), (4, 151, 'A', False), (5, 212, 'A', True) ],..

[Python] 파일 존재 여부 확인 / 삭제

개요 Python으로 서버에 저장되어 있는 파일을 다루어야 한다. 이 글에서는 서버에 원하는 파일이 있는지 확인하고 삭제하는 방법을 적어둔다. 경로 존재 여부 확인 os.path.exists는 입력받은 경로가 존재하는지 확인하여 bool 데이터를 반환한다. import os if __name__ == '__main__': file_path = 'D:\\PycharmProjects\\airflow_test\\val_test.py' dir_path = 'D:\\PycharmProjects\\airflow_test' print(f'{file_path}: {os.path.exists(file_path)}') print(f'{dir_path}: {os.path.exists(dir_path)}') 파일 여부 확인 ..

Python 2023.04.30

[Python] subprocess.Popen - 시스템 명령어 실행

개요 2023.02.08 - [Python] 시스템 명령어 실행에서 정리하지 않았던 subprocess.Popen 객체에 대해 추가적으로 정리한다. Popen 객체 이전 글에서 살펴봤던 subprocess.run은 내부적으로 Popen 객체를 통해 동작한다. subprocess.run은 명령어 실행 후 종료할 때까지 대기하지만 Popen은 백그라운드 프로세스로 실행하며 세밀하게 시스템 명령을 사용할 수 있다. class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, unive..

Python 2023.04.27
1 2 3 4 5 6 7 ··· 20