분류 전체보기 1188

[Superset] DB 연결 (MySQL)

개요 2023.02.21 - [Superset] 설치 및 실행 에서 Superset을 설치해 보았다. 이 글에서는 Superset에서 시각화할 데이터가 저장된 데이터베이스 연결을 해보도록 한다. 사용할 데이터베이스는 AWS RDS MySQL 8.0.28 엔진이다. 데이터베이스 드라이버 설치 Superset은 SQLite 외의 다른 데이터베이스를 연결하여 사용할 때는 드라이버 설치가 필요하다. MySQL의 경우 Python mysqlclient 라이브러리 설치가 필요하다. pip install mysqlclient 💡 ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command ou..

Apache Superset 2023.02.22

[Superset] 설치 및 실행

개요2023.02.20 - Apache Superset 이란?에 대해서 정말 간단히 superset에 대해 소개했는데, 이 글에서는 공식 문서를 참고하여 설치 방법을 정리해두려고 한다. 설치는 컨테이너 환경이 아니라 호스트 환경에서 python pip로 진행한다. 설치 환경은 다음과 같다.설치 환경- server : AWS EC2- OS : Ubuntu 20.04.5 LTS - Python : 3.8.10   설치별다른 구성 없이 기본 구성으로 진행한다. 1. 종속성 패키지 설치호스트에 설치하는 경우 OS 환경에 대한 종속성을 가진다. 설치에는 root 권한이 필요하다.apt updateapt install build-essential libssl-dev libffi-dev python3-dev pyth..

Apache Superset 2023.02.21

Apache Superset 이란?

Apache Superset 대규모 데이터를 처리할 수 있는 데이터 탐색 및 데이터 시각화를 위한 오픈소스 소프트웨어 기업에서 데이터를 수집, 정리, 분석하고 활용하여 효율적인 의사결정을 할 수 있는 방법에 대해 연구하는 비즈니스 인텔리전스(Business Intelligence, BI) 솔루션 중 하나이다. 에어비앤비 헤커톤 프로젝트로 시작해 2017년 아파치 인큐베이터 프로그램에 들어간 뒤, 2021년에 아파치 재단 최상위 프로젝트가 되었다. 특징 1. 오픈소스 소프트웨어로 무료로 사용할 수 있다. 2. 다양한 시각화 도구를 지원하며 동적인 대시보드 구성이 가능하다. 3. 다양한 데이터베이스를 지원한다. 4. 공식적으로 Window를 지원하지 않는다. 참고 문서 https://en.wikipedia...

Apache Superset 2023.02.20

[Python] multiprocessing

멀티 프로세싱 부모 프로세스가 OS에 요청해 자식 프로세스를 만드는 과정을 process spawning이라고 하는데, 파이썬에서는 multiprocessing과 같은 모듈을 이용하면 process spawning을 쉽게 수행할 수 있다. 즉, 부모 프로세스가 많은 작업을 처리할 때 작업 중 일부를 자식 프로세스에게 위임하여 처리하는 멀티 프로세싱을 수행할 수 있다. 멀티 프로세싱을 사용하면 복잡하거나 양이 많아 오래 걸리는 작업을 병렬 처리할 수 있어 단일 프로세스를 사용할 때보다 짧은 소요시간을 기대할 수 있다. 이 글에서는 멀티 프로세싱을 위한 mutliprocessing 모듈 사용법을 간단히 정리한다. 모듈 import 아래와 같이 multiprocessing 라이브러리를 import 하여 사용할..

Python 2023.02.19

[Python] Pandas - Groupby 인덱스/컬럼

개요 2022.12.31 - [Python] Pandas - 피봇테이블과 그룹분석 2에서 그룹 분석을 위한 groupby와 그룹 연산에 대해 정리했다. 이 글에서는 그룹 분석 후 결과 데이터의 인덱스와 컬럼에 대해 적어둔다. 예시 데이터 예시로 사용할 데이터는 아래와 같다. import pandas as pd df = pd.DataFrame({ 'key1': ['A', 'A', 'B', 'B', 'A'], 'key2': ['one', 'two', 'one', 'two', 'one'], 'data1': [1, 2, 3, 4, 5], 'data2': [10, 20, 30, 40, 50] }) 그룹화 기준 컬럼 처리 groupby 함수로 전달한 그룹화 기준 컬럼은 그룹 연산한 결과의 index가 된다. 결과의..

[Python] datetime/timestamp 변환

개요 작업을 하다 보면 datetime 또는 timestamp를 자주 사용하게 된다. 주로 사용하는 자료형은 사람이 읽기 쉬운 datetime이지만, 결괏값이 timestamp인 경우에는 형변환이 필요하다. 이 글에서는 datetime에서 timestamp를, timestamp에서 datetime을 얻는 방법을 정리해둔다. timestamp -> datetime timestamp로부터 datetime을 얻을 때는 datetime 모듈의 fromtimestamp 함수를 사용한다. from time import time from datetime import datetime current_timestamp = time() print(current_timestamp) print(datetime.fromtimes..

Python 2023.02.17

[Python] re.groupdict - 그룹화한 정규표현식 Dictionary로 반환

개요 2022.08.29 - [정규 표현식] Group에서 메타문자 소괄호를 이용해 특정 문자열의 패턴 일치 여부를 확인했다. 이 글에서는 그룹화한 패턴에 일치한 문자열을 Dictionary로 반환해 본다. 패턴 그룹화 및 네이밍 정규표현식 그룹화 및 네이밍 방법은 아래와 같다. (?PPATTERN) 예시) import re val = 'jon@geekforgeeks.org' match_object = re.match(r"(?P\w+)@(?P\w+)\.(?P\w+)", val) print(match_object.groups()) re.groupdict re.groupdict 함수는 group의 이름을 키로, 패턴에 일치한 문자열을 값으로 하는 Dictionary를 반환한다. 만약 일치하는 문자열이 없는 ..

Python 2023.02.16

[boto3] AWS S3 객체 읽기 (JSON/CSV/TXT)

개요 2023.01.21 - [boto3] S3 Select - OverMaxRecordSize 에러 대안에서 S3에 저장된 데이터를 읽는 방법에 대해 소개했는데, 이 글에서는 JSON이나 CSV가 아니라 일반 텍스트 객체를 읽어 들여보려고 한다. Pandas를 이용한 JSON, CSV 객체를 읽는 방법도 같이 적어둔다. 일반 객체 읽기 S3 객체에 대해 GET을 수행하면 응답의 Body 속성이 객체 데이터에 해당한다. Body 속성은 botocore.response.SteamingBody 클래스로, read() 함수를 이용하여 Byte 데이터를 얻을 수 있다. 문자열로 변경하고 싶다면 utf-8 등으로 캐릭터 셋을 변경한다. 객체 데이터는 client, resource를 사용하여 읽어들일 수 있다. C..

Python 2023.02.15

[AWS] ec2metadata - EC2 인스턴스 메타데이터 확인

EC2 인스턴스 메타데이터(IMDS) intance_id, instance_type, ami-id 등과 같이 실행 중인 인스턴스를 구성하거나 관리하는 데 사용하는 인스턴스 관련 데이터 EC2 생성 시 메타데이터의 엑세스 여부와 버전 등을 선택할 수 있다. 인스턴스 메타데이터를 사용해 인스턴스를 시작할 때 지정한 사용자 데이터(실행 스크립트)에도 접근이 가능하다. 다만 인증 또는 암호화 등의 방법으로 보호되지 않으며 인스턴스에 접근할 수 있는 모든 사용자는 제한 없이 접근할 수 있다. ec2metadata ec2metadata를 검색할 수 있는 명령어로, EC2에는 기본적으로 포함되어 있는 것 같다. 만약 명령어가 설치되어 있지 않다면, 아래의 명령어를 이용해 설치할 수 있다. apt install clo..

AWS 2023.02.14

[Python] Pandas - DataFrame 컬럼 이름 변경

개요 두 개의 DataFrame을 merge 한 결과 DataFrame에서 DataFrame 컬럼을 다르게 변경하려고 한다. 아래의 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.rename df.rename 함수는 index 또는 column의 이름을 변경할 수 있다. index 또는 columns 매개변수에 변경 대상의 이름(AS_IS)과 변경할 이름(TO_BE)을 딕셔너리로 전달한다. df.rename(columns={as_is_name: to_be_name, as_is_name2: to_be..