Python 308

[Python] globals() - 전역 변수 확인 및 설정

개요 2022.10.01 - [Python] 전역/지역 변수와 범위에서 전역변수와 지역변수에 대해 간단히 정리했다. 이 글에서는 특정 모듈 내에서 사용되는 전역 변수를 확인하고 설정하는 방법을 정리한다. globals() Python 내장 함수 중 하나로, 현재 모듈에서 사용하는 전역 변수의 이름과 값으로 이루어진 Dictionary를 반환한다. 예로 들어 아래와 같이 test 함수 내에 지역 변수 a, b가 정의되어 있고, 전역 변수로 c, b가 정의되어 있는 경우 globals 함수의 출력을 살펴본다. def test(): a = 1 b = 2 test() c = 3 b = 4 print ("Global Variables in this module") print (globals()) 실행 결과 Glo..

Python 2023.04.20

[Python] 객체 속성 관련 함수

개요 이번 글에서는 Python에서 객체의 속성을 다룰 때 사용하는 setattr, getattr, hasattr, delattr 함수에 대해 정리한다. 예시 클래스 및 객체는 아래와 같이 사용한다. class Person: name = 'Adam' p = Person() print(p.name) setattr 객체에 속성을 설정한다. 설정하고자 하는 값이 객체에 없다면 속성을 추가하고 값을 할당한다. 반환 값은 없다. setattr(object, attribute_name, value) 예시) class Person: name = 'Adam' p = Person() setattr(p, 'name', 'James') setattr(p, 'age', 20) print(p.name, p.age getattr..

Python 2023.04.16

[Python] Pandas - read_csv 컬럼 타입 지정

개요 Pandas.read_csv 함수를 이용해 CSV 파일을 읽어 들이면 데이터의 타입을 추론하여 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...

[Python] Pandas - read_csv 날짜 데이터 읽기

개요 아래와 같은 CSV 파일이 있다고 하자. date, idx, val 1/5/2020 10:00:00, 1, 10 1/5/2020 10:10:00, 1, 12 1/5/2020 10:20:00, 1, 17 1/5/2020 10:00:00, 2, 11 1/5/2020 10:10:00, 2, 14 1/5/2020 10:20:00, 2, 16 날짜 형식의 데이터인 date 컬럼이 존재하는데, 이 파일을 read_csv로 읽은 후 데이터형을 확인하면 다음과 같다. 코드) import numpy as np import pandas as pd f_name = 'sample.csv' df = pd.read_csv(f_name) print(df.info()) datetime 형이 아니라 object 형 데이터로 추론..

[Python] Pandas - DataFrame.dtypes를 Dictionary로 변환

개요 DataFrame의 데이터 타입을 확인할 때는 dtypes 속성을 사용한다. 그리고 dtypes 속성은 Series이다. 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) print(df.dtypes) print(f'type : {type(df.d..

[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