분류 전체보기 1191

[aws cli] S3 Select

개요 2022.11.07 - [AWS] S3 Select - 객체 내 데이터 쿼리에서 정리한 S3 Select 기능을 aws cli를 통해 이용하는 방법을 정리한다. select-object-content cli로 S3 Select를 이용할 때는 데이터를 조회할 파일(bucket, key), 데이터를 조회할 쿼리(expression, expression-type), 그리고 입력으로 받을 데이터 형식과 결과로 낼 데이터 형식을 지정해야 한다. aws s3api select-object-content \ --bucket \ --key \ --expression --expression-type SQL \ --input-serialization \ --output-serialization \ 입력 설정(inpu..

AWS 2023.01.17

[Python] Pandas - DataFrame 문자열 변환

개요 DataFrame 내용을 Slack이나 MS Teams Webhook으로 알람을 보내는 등의 이유로 DataFrame을 문자열로 변환하고자 한다. to_string DataFrame을 콘솔 친화적인 형식으로 렌더링 한다. 예로 들어 titanic 데이터세트를 출력하면 아래와 같다. import numpy as np import pandas as pd import seaborn as sns titanic = sns.load_dataset("titanic") titanic to_string 함수를 사용해서 문자열로 렌더링 하면 다음과 같다. 주피터 노트북에서는 문자열로 렌더링 한 DataFrame은 print 함수로 출력하는 게 보기 편하다. print(titanic.to_string()) 인덱스 빼고..

[Airflow] n번째 특정 요일마다 스케쥴하기

개요 매 달 또는 분기별 첫 번째 주 월요일에 DAG 스케쥴링 설정을 하고자 한다. 즉, 2021.06.24 - crontab - 매달 N번째 특정 요일에 실행시키기와 동일한 스케쥴링을 Airflow에서 설정해보려고 한다. Airflow DAG를 스케쥴링할 때는 cron 표현식을 사용하므로 속성과 값의 범위, 특수 문자를 이용해 스케쥴링할 것이다. cron 표현식 Airflow DAG를 스케쥴링할 때는 cron 표현식을 사용할 수 있다. 속성 필수 유효 값 유효 특수 문자 비고 분 O 0–59 * , - 시간 O 0–23 * , - 날짜 O 1–31 * , - ? L W 일부 구현에서만 '?', 'L', 'W' 허용 월 O 1–12 또는 JAN–DEC * , - 요일 O 0–6 또는 SUN–SAT * ,..

Apache Airflow 2023.01.15

[Python] Pandas - 반복문으로 DataFrame 합치기

개요 이 글에서는 같은 구조의 DataFrame을 반복적으로 만든 뒤, 하나의 DataFrame으로 합치는 방법에 대해 정리한다. DataFrame을 합치는 방법으로는 concat, merge, append, join 등의 함수가 존재한다. 다만 기준 열을 이용해 합치는 것이 아니라 단순히 세로로 데이터 연결을 하고자 하므로 이 글에서는 concat과 append를 살펴볼 것이다. 아래 데이터를 예시로 정리한다. import numpy as np import pandas as pd import seaborn as sns titanic = sns.load_dataset("titanic") append 행 끝에 다른 행을 추가한 새 DataFrame을 반환한다. 추가할 DataFrame의 인덱스를 무시할 때..

[Python] Pandas - DataFrame NaN 포함 행 제거

개요 DataFrame을 저장할 때 NaN을 포함한 행은 제외하고 저장하고자 한다. 아래 데이터를 예로 들어 방법을 정리한다. import numpy as np import pandas as pd import seaborn as sns planets = sns.load_dataset('planets') planets 데이터 확인 df.info 함수를 이용해 DataFrame에 저장된 데이터의 정보를 간단히 살펴본다. info 함수를 이용하면 객체의 타입, 인덱스 길이와 범위, column의 이름과 데이터 타입, 그리고 결측값이 아닌 데이터의 개수 등의 정보를 확인할 수 있다. planets.info() # 실행 결과 RangeIndex: 1035 entries, 0 to 1034 Data columns ..

[Python] Pandas - DataFrame 컬럼 순서 변경

개요 DataFrame으로 데이터를 추가하다 출력할 때가 되면 데이터를 추가한 순서가 보기 편한 순서와 달라 데이터가 눈에 잘 안 들어오는 경우가 있다. 아래의 데이터를 예시로 들어 DataFrame의 컬럼 순서를 변경하는 방법을 정리해둔다. import seaborn as sns titanic = sns.load_dataset("titanic") titanic 컬럼 나열 원하는 순서로 컬럼을 다시 나열하여 인덱싱 한다. df.columns 속성을 이용하면 필요한 컬럼을 빠트리지 않을 수 있다. titanic.columns # 실행 결과 Index(['survived', 'pclass', 'sex', 'age', 'sibsp', 'parch', 'fare', 'embarked', 'class', 'who..

[Python] 빈 DataFrame 생성 / 확인

개요 DataFrame을 다루다보니 빈 DataFrame을 생성하거나 DataFrame이 비어있는지 여부를 확인해야 하는 경우가 있었다. 방법을 간단히 정리해둔다. 빈 DataFrame 생성 DataFrame을 생성할 때는 컬럼과 데이터를 딕셔너리로 정의해서 생성자로 전달했다. 다만 빈 DataFrame을 생성할 때는 데이터 없이 생성자를 호출하면 된다. df = pd.DataFrame() print(df) # 실행 결과 Empty DataFrame Columns: [] Index: [] 컬럼이 있는 빈 DataFrame 생성 데이터는 없지만, 컬럼을 지정하여 DataFrame을 생성해야 할 때는, columns 매개변수로 컬럼 이름만 전달한다. df = pd.DataFrame(columns=['날짜']..

[Airflow] 트리거 규칙 (Trigger Rule)

트리거 규칙 기본적으로 Airflow는 모든 상위 Task이 성공해야 다음 Task를 실행한다. 다만 필요한 경우 task 정의 시 trigger_rule 변수를 이용해 Task 실행 규칙을 지정할 수 있다. 옵션 trigger_rule로 지정할 수 있는 값은 다음과 같다. 값 동작 방식 all_success 모든 상위 Task 실행 성공 all_failed 모든 상위 Task가 실행 실패, 또는 upstream_failed 상태 all_done 모든 상위 Task 실행 완료 one_failed 하나 이상의 상위 Task 실패. 모든 상위 Task의 실행 완료를 대기하지 않는다. one_success 하나 이상의 상위 Task 성공. 모든 상위 Task의 실행 완료를 대기하지 않는다. none_faile..

Apache Airflow 2023.01.10

[AWS] EKS 접근 설정

개요 이미 생성되어 있는 EKS에 접속할 수 있도록 설정해보려고 한다. EKS에 접근하기 위해서는 다음과 같은 사항이 필요하다. aws cli : eks는 버전 2에서만 지원한다. EKS 클러스터 접근 권한이 부여된 IAM 사용자 또는 역할 kubectl 방법은 다음과 같다. 권한 설정 및 확인 aws profile을 등록하고, 접근할 EKS 클러스터의 정보를 조회할 수 있는지 확인한다. # profile 등록 aws configure # 클러스터 목록 확인 aws eks list-clusters \ --profile --region ap-northeast-2 # 클러스터 정보 확인 aws eks describe-cluster \ --name \ --profile --region ap-northeast-..

AWS 2023.01.09

[Python] Pandas - 시계열 자료 다루기 3

dt datetime 자료형을 다룰 때는 dt 접근자를 이용해 datetime 자료형이 가진 속성과 메서드를 사용할 수 있다. 아래의 데이터를 예로 들어 정리한다. s = pd.Series(pd.date_range("2020-12-25", periods=100, freq="D")) s # 실행 결과 0 2020-12-25 1 2020-12-26 2 2020-12-27 3 2020-12-28 4 2020-12-29 ... 95 2021-03-30 96 2021-03-31 97 2021-04-01 98 2021-04-02 99 2021-04-03 Length: 100, dtype: datetime64[ns] 년, 월, 요일 정보 얻기 dt 속성을 통해 year, month, day, weekday 정보를 얻..