파이썬 23

Pandas 피벗 테이블 예제 코드 및 설명

Pandas 피벗테이블 활용하기 Pandas의 피벗테이블은 데이터를 요약하고 분석하기에 유용한 도구입니다. 피벗테이블을 사용하면 특정 칼럼의 Data들을 column으로 해서 특정 값을 aggregate하는 새로운 분석 테이블을 만들어서 데이터를 분석할 수 있습니다. 특히, 여러 개의 column으로 group by 되어 있는 테이블에서 한 번 더 group by를 해서 aggregate할 때 유용합니다. 피벗테이블이란? Pivot table은 스프레드시트 프로그램(예: Excel, Google Sheets)에서 자주 사용되는 데이터 요약 기능 중 하나입니다. Pivot table은 원시 데이터를 기반으로 요약된 정보를 생성하는 것으로, 데이터를 쉽게 분석하고 시각화하는 데 도움이 됩니다. 사실 이렇게만..

Airflow Scheduler 역할 및 성능 개선 정리

Scheduler 개요 Scheduler는 Airflow의 주요 컴포넌트 중 하나입니다. Airflow의 스케줄러는 모든 작업과 DAG를 모니터링하고, 해당 작업들의 의존성이 완료된 후에 작업 인스턴스를 트리거합니다. 내부적으로 스케줄러는 서브프로세스를 생성하여 지정된 DAG 디렉토리의 모든 DAG를 모니터링하고 동기화합니다. 기본적으로 1분마다 스케줄러는 DAG 파싱 결과를 수집하고, 활성화된 작업들이 트리거될 수 있는지 확인합니다. 즉, Scheduler가 실행되지 않으면 DAG을 실행시킬 수 없습니다. Scheduler의 역할은 크게 아래와 같습니다. DAG(Directed Acyclic Graph)의 실행 스케줄링: Airflow에서 DAG는 작업들의 연결을 정의한 것이며, scheduler는 D..

Airflow Task 우선순위 설정하기(Priority weights)

Task Priority Weights 이 글은 Airflow Task의 우선순위를 priority_weight 파라미터와 weight_rule 을 이용해서 관리하는 방법을 설명합니다. 최근에 많은 양의 DAG을 rerun해야하는 경우가 발생했는데 우선순위가 높은 DAG의 스케쥴이 뒤로 밀려서 불편함을 겪어서 Task우선순위를 설정하는 방법에 대해서 찾아보게 됐습니다. Airflow는 task의 우선순위를 결정하기 위해 task의 priority_weights를 사용합니다. priority_weight는 각 task에 대해 정의되어 있으며, Airflow scheduler가 task를 실행할 때 사용되고, weight_rule는 priority_weight을 계산하는 방법에 대한 설정 값입니다. 해당 값..

데이터 관련 직무 정리 (데이터 엔지니어, 분석가, 데이터 사이언티스트, 머신러닝 엔지니어등)

이번 글에서는 데이터와 관련된 직무들을 정리해보려고 합니다. 최근에 데이터의 중요성과 AI가 활용되면서 데이터와 관련된 많은 직무들이 나타났습니다. 그렇기 때문에 아직은 서버 엔지니어나 프론트 엔지니어에 비해서 인원도 적고, 회사 별로 하는 일도 조금씩 다른 것 같습니다. 각각의 직무가 하는 일은 다르지만 하나의 공통점은 데이터플랫폼을 기반으로 일을 한다는 사실입니다. 그래서 각각의 직무에 대해서 살펴보기 전에 데이터 플랫폼에 대한 간단한 설명과 각 직무들이 데이터플랫폼의 어떤 부분과 관련이 있는지 알아보겠습니다. 데이터플랫폼은 전에는 Datawarehouse로만 구성되어 있는 분석환경을 Ingestion/Data Lake/Process/Data warehouse/Utilization등 여러 계층과 서비..

일상/정보 2023.02.28

Pandas dataframe 메모리 사용량 확인하기

Pandas의 dataframe 및 각 column의 메모리를 체크하는 방법은 매우 간단합니다. dataframe 전체 메모리 dataframe.info() 메서드를 이용하면 맨 아래 memory usage가 출력됩니다. >>> df.info() RangeIndex: 173511 entries, 0 to 173510 Data columns (total 47 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 173511 non-null int64 1 created_at 173511 non-null datetime64[ns] 2 updated_at 173511 non-null datetime64[ns] 3 deleted_..

Airflow Taskflow로 DAG refactoring하기

Introduction 안녕하세요. 이번 글에서는 Taskflow를 사용해서 다른 외부 Operator가 아닌 파이썬 Operator로만 이뤄진 DAG을 리팩토링 한 경험을 공유하려고 합니다 Taskflow란 Taskflow란 Airflow2.0에서 출시된 concept으로 Operator가 아닌 파이썬 로직들로만 이뤄진 DAG의 경우 @task decorator를 활용해서 깔끔하게 로직을 관리할 수 있습니다. 실제로 DB의 incremental data나 API나 크롤링을 통해 진행되는 작은 배치들(수십 MB 이하)은 Pandas의 Dataframe을 통해서도 쉽고 빠르게 조작이 가능합니다. Taskflow의 장점은 Xcoms을 사용하여 return 값을 전달해서 작업 간에 결과를 전달하기 편리합니다...

Airflow Sensor 정리 (feat. S3 Sensor)

Concept Operator의 한 가지 type으로 wait for something to occur 이라는 한 가지 목적으로 만들어졌다. time-based로 어떤 이벤트 또는 조건이 성사되는 것을 기다린다. 여기서 something은 아래와 같은 것들이 있다. file의 생성여부 external event 그 밖의 다양한 기다릴 수 있는 조건 or event. 기본적으로 해당 event가 일어날 때 까지 기다리다가 발생하면 다음 downstream의 task가 동작할 수 있도록 하는 역할을한다. 즉, 어떤 파일이나 이벤트 기반으로 다음 task를 수행해야 할 때 사용할 수 있다. ex) loader라는 서비스에서 file을 지정된 위치에 저장한 후에 compactor라는 서비스에서 데이터를 comp..

Python/Django NewRelic 셋업 및 환경 분리하기.

Introduction 이번 글에서는 Python 및 Django에서 NewRelic을 셋업하고 환경 별로 분리하는 방법을 소개합니다. NewRelic은 대표적인 APM (Application Performance Monitoring) 서비스 중 하나입니다. NewRelic을 설치해서 쉽게 어플리케이션의 병목을 확인할 수 있습니다. 대부분의 내용은 공식 문서에 명시되어 있는 내용이고 제 기준으로 이해하기 쉽도록 정리한 글이라고 생각하시면 될 것 같습니다. Set up newrelic 셋업은 굉장히 간단한 편입니다. 대부분의 웹 프레임워크(Django, Flask 등) 및 호스팅 프로그램(WSGI, Gunicorn, uWSGI)등은 기본 Python Agent 설정만 해주면 됩니다. 웹이 아닌 단순 스크립..

파이썬 SMTP Gmail app password 설정하기

오랜만에 간단하게Gmail Email Client코드를 작성하려는데 예전에 해놓은 설정이 곧 있으면 지원하지 않는 것을 발견했다. 보안 수준이 낮은 앱의 액세스를 2022년 5월 30일부터 막아서, 2-Step auth를 켜고 App password를 사용해야 Python smtp client로 이메일을 보낼 수 있게된다. (기업용 Google workspace는 계속 지원한다고 한다. 개인 메일만 해당된다.) 이전 설정 그 전에 해놓은 설정은 크게 두 가지 였다. 1) Gmail settings -> Forwarding and POP/IMAP 에서 다른 client들에서 IMAP을 이용해서 메일을 보낼 수 있도록 IMAP을 홝성화. 2) 보안 수준이 낮은 앱을 액세스할 수 있도록 설정. Account의..

Fluent Python Chapter 21. 클래스 메타프로그래밍

Introduction 21장은 클래스 메타프로그래밍입니다. 런타임에 클래스를 생성하고 변경하는 프로그래밍 방법을 의미합니다. 파이썬 Guru개발자들을 프레임워크를 만드는것이 아니면 해당 기능을 사용하는 것을 권장하지 않습니다. 해당 기능이 주는 편리함보다는 해치는 가독성이 더 크기 때무일 것 같습니다. 인터프리터단에서 동작하는 부분이 많을수록 파이썬으로 어플리케이션을 주로 개발하는 개발자들에게는 가독성이 좋지 않을 수 있습니다. 해당 장에서는 클래스를 생성하는 함수를 이용해서 클래스를 만드는 것을 시작으로 클래스 데커레이터, 임포트 타임과 런타임, 메타클래스에 대해서 살펴봅니다. 지난 장에서 descriptor 객체의 storage_name이 구분하기 어려웠던 것들을 클래스 데커레이터와 메타클래스를 사..

반응형