Python 266

[Python] Counter - 데이터 수 확인

개요 평소 어떤 리스트 내 원소가 나타난 수를 셀 때 다음과 같은 방식으로 셌었는데, Python의 Counter 클래스를 사용하면 편하게 데이터의 수를 셀 수 있다고 한다. tangerine = [1, 3, 2, 5, 4, 5, 2, 3] for i in tangerine: if i not in t_group: t_group[i] = 0 t_group[i] += 1 사용방법을 정리해 둔다. Counter 란 사용하고자 하는 클래스는 collections 모듈의 Counter 클래스로, 해시 가능한 객체를 카운트하기 위한 딕셔너리 하위 클래스이다. 원소가 키(key)고, 원소의 개수가 값(value)인 딕셔너리로 저장된다. 값에는 0과 음수를 포함한 모든 정수가 허용된다. 임포트 추가 패키지 설치 없이 ..

Python 2023.10.10

[Python] re - 정규표현식 일치 부분을 대문자로 변환하기

개요 정규표현식과 일치한 문자열은 대문자로 변환하고자 한다. 정규표현식에 대소문자 변환 기능을 가진 메타문자 \u, \U, \l, \L 등이 존재하지만, Python에서는 유니코드 패턴으로 인식되어 동작하지 않는 것 같다. 대안을 적어둔다. 방법 검색할 정규식 패턴에 그룹화를 사용하여, lamdba를 이용해 해당 그룹에 대해 upper 함수를 적용하면 된다. 굳이 lambda를 사용하지 않고 대문자 변환 함수를 정의하여 re.sub의 repl 매개변수로 넘겨도 된다. 아래는 소문자로 시작하거나, 공백과 소문자 조합인 문자를 대문자로 변환하는 코드이다. import re def Jaden_Case(s): return re.sub(r'(^|\b)([a-z])', lambda x: x.group().upper..

Python 2023.09.06

[Python] Celery 란

Celery 방대한 양의 메시지를 처리할 수 있는 분산 작업 큐(Distributed Task Queue). 분산 메시지 전달을 기반으로 하는 비동기 작업 큐라고 정의하기도 한다. Celery는 간단하고(simple), 유연하고(flexible), 안정적이며(reliable), Task 스케쥴링을 지원하되 실시간 처리에 중점을 두고 있다. Python 동시성 프로그래밍에서 많이 사용한다. Celery 자체는 Python으로 작성되어 있지만 프로토콜은 모든 언어로 구현할 수 있다. Task Queue 개념 스레드 또는 machine 간에 Task를 분산하는 메커니즘으로 사용된다. Task Queue는 Task라고 불리는 작업 단위를 입력으로 받는다. Celery의 클라이언트가 큐에 추가한 메시지는 brok..

Python 2023.08.25

[Python] enumerate 함수

개요 보통 Python에서 리스트에 대한 for문을 수행할 때는 아래와 같이 사용한다. message = ['Continue', 'Switching Protocol', 'Processing', 'Early Hints'] for msg in message: print(msg) 만약 index를 이용해 리스트에 저장된 원소를 접근해야 할 때는 다음과 같이 사용했었다. message = ['Continue', 'Switching Protocol', 'Processing', 'Early Hints'] for i in range(len(message)): print(i, message[i]) 다만 range를 이용해 접근하는 방식은 Pythonic 하지 않은 방법이라고 한다. 이 글에서는 Pythonic 하게 리..

Python 2023.08.24

[Python] pipdeptree - 패키지 의존성 확인

pipdeptree Python 환경에 설치되어 있는 패키지와 그 버전을 확인할 때는 pip list, pip freeze 명령을 사용하곤 한다. pip list pip freeze 간단히 패키지 정보를 확인하기엔 충분하지만 패키지 간의 의존성 등에서 충돌이 발생했을 때는 정보가 부족한 감이 있다. 이럴 때 패키지 간 의존성을 tree 형식으로 표시하는 pipdeptree를 사용하면 좋다. 설치 간단히 pip 명령을 이용해 설치할 수 있다. pip install pipdeptree 사용법 1. 환경 내 모든 패키지 의존성 확인 옵션 없이 사용하면 모든 라이브러리에 대한 의존성 tree를 출력한다. pipdeptree 위의 사진을 통해 launchpadlib라는 패키지는 httplib2, keyring, ..

Python 2023.08.22

[Pandas] DataFrame CROSS JOIN

CROSS JOIN CROSS JOIN은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 것을 뜻하며, 두 테이블의 각 행의 개수를 곱한 만큼의 결과가 나온다. Pandas DataFrame을 join 하는 법은 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1 (merge / join)에서 살펴보았는데, cross join에 대해서는 정리하지 않아서 추가로 정리한다. pandas 1.2 이상의 버전인 경우 위의 예시 그림처럼 hair type과 hair style 두 개의 DataFrame이 있다고 하자. import pandas as pd import numpy as np hair_type = pd.DataFrame({'Hair Type' : ['A', 'B'..

[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