python 244

[Python] 타입 어노테이션(type annotation)

개요 Python은 변수의 타입을 명시하지 않는 대표적인 동적 타입 언어 중 하나인데, Python으로 개발된 프로젝트의 코드를 보면 함수 매개변수 등에 변수의 타입을 지정하는 것처럼 보이는 구문이 존재하는 것을 확인할 수 있다. def greeting(name: str) -> str: return 'Hello ' + name 이 글에서는 해당 구문이 무엇을 의미하고, 어떻게 동작하는지 정리해두려고 한다. 타입 어노테이션(type annotation) 동적 타입 언어는 효율적으로 코드를 작성할 수 있어 일회성 스크립트나 작은 애플리케이션을 빨리 개발하기 좋다. 하지만 변수의 데이터 타입에 대한 동적인 면은 애플리케이션의 규모가 커질수록 프로그램의 안정성을 위협하기도 한다. 때문에 중규모 이상의 프로젝트에..

Python 2024.05.08

[Pandas] update - 다른 데이터프레임 값으로 수정

개요두 개의 다른 데이터프레임이 있을 때, 한 데이터프레임의 컬럼의 데이터프레임의 컬럼 값으로 수정하고 싶다. 확인해 보니 Pandas에서 제공하는 update 함수를 이용할 수 있는 것 같다.사용 방법을 적어둔다.  DataFrame.updateupdate는 데이터프레임의 컬럼을 다른 DataFrame의 컬럼으로 덮어씌운다. 단 결측치가 아닌 값만 사용하며. 반환값 없이 원본이 변경된다.인덱스와 컬럼이 동일한 셀의 값으로 데이터프레임을 수정하기 때문에, 두 데이터프레임 간에는 같은 이름의 인덱스와 컬럼이 존재해야 한다. 만약 시리즈를 사용한다면 name 속성을 사용해 컬럼 이름을 동일하게 맞추어야 한다.DataFrame.update(other, join='left', overwrite=True, fil..

[Pandas] 데이터프레임의 다른 컬럼을 참조하여 문자열 치환

개요 기존에 처리해서 S3에 저장한 데이터를 새로 처리해 새로운 경로에 저장하고 있다. 예로 들어 기존 데이터가 저장된 S3 경로가 아래와 같다면, s3://test-bucket/summary/titanic/class=First/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/summary/titanic/class=Second/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/summary/titanic/class=Third/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/raw/iris/species=setosa/2770df..

[Python] warnings - warning 메세지 무시하기

개요 Python으로 프로그래밍을 하다 보면 자연스럽게 여러 가지 종류의 경고 메세지를 보게 된다. 당장 해결해야 하는 문제는 아지만 추후 오류로 발전할 수 있기 때문에 확인한 메세지에 대해서 조치하는 편이 좋지만, 여러 가지 이유로 조치할 수 없을 수도 있다. 다만 과다한 경고 메세지로 인해 실행 로그가 지나치게 길어지게 되는 경우에는, 스토리지 용량과 관련된 문제를 야기할 수 있다. 따라서 이런 경우에는 로그 메세지를 무시할 수 있도록 조치할 필요가 있다. 이번 글에서는 warnings 모듈을 이용해 경고 메세지를 출력하지 않도록 하는 방법을 적어둔다. warnings 개발자는 프로그램 실행 도중 예외가 발생하거나 프로그램을 종료된다고 보장할 수 없는 특정 조건에 대해 경고할 필요가 있을 때 경고 메..

Python 2024.04.03

[Jupyter] Import한 외부 모듈 변경점이 반영되지 않는 경우

현상 Jupyter Notebook에서 다음과 같이 외부 모듈을 Import 하여 사용하고 있다. 예시 ) - test.py # test.py def test_func(): return 10 - Notebook import test test.test_func() 그리고 test 모듈에 test_func_v2라는 새로운 함수를 추가한 뒤, Notebook에서 실행하려고 했다. - test.py 수정 # test.py def test_func(): return 10 def test_func_v2(): return 20 - Notebook 수정 import test test.test_func_v2() 하지만 사진과 같이 test 모듈에 test_func_v2라는 함수가 없다는 에러가 발생했다. 원인을 확인하고..

Python 2024.02.28

[Pandas] DataFrame 비교 - equals

개요 어떤 데이터가 처리되던 방식을 변경하려고 한다. 변경된 처리 방식을 적용하기 전에 기존 방식으로 처리된 데이터와 새로운 방식으로 처리된 데이터가 동일한지 확인하고 싶다. 각 방식으로 처리된 DataFrame을 비교하면 될 것 같아, 이 글에서 DataFrame을 비교하는 여러 방법 중 equals 함수 사용법에 대해 정리한다. DataFrame.equals equals 함수는 DataFrame 또는 Series를 서로 비교하여 동일한지 확인한다. 만약 NaN이 동일한 위치에 있다면 같은 것으로 취급한다. 두 객체의 모든 요소가 동일하면 True, 그렇지 않으면 False를 반환한다. 테스트 1. 같은 데이터로 생성한 DataFrame 비교 data = { 'brand': ['Yum Yum', 'Yu..

[Pandas] DataFrame 중복 확인/제거

개요 데이터를 병합하는 과정에서 데이터가 증가하는 경우가 있었는데, 아무래도 DataFrame에 존재하는 중복 데이터가 원인인 것 같다. DataFrame에서 중복 데이터를 확인하고 제거하는 방법에 대해 적어둔다. 예시 데이터 위의 데이터를 예시로 중복된 데이터를 확인하고, 제거해 보자. import pandas as pd df = pd.DataFrame({ 'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'], 'style': ['cup', 'cup', 'cup', 'pack', 'pack'], 'rating': [4, 4, 3.5, 15, 5] }) duplicated DataFrame.duplicated 함수는 전달받은 컬럼을 대상으로 ..

[Python] 콜백 함수 (Callback)

개요 프로그래밍 업무를 하다 보면 콜백함수란 단어를 간혹 듣게 되는데, 개인적으로 개념을 잘 이해하고 있는 것 같진 않아 이번 기회에 정리해보려고 한다. Callback 프로그래밍에서 콜백 또는 콜백함수란 다른 코드의 인수로 넘겨주는 실행 가능한 코드를 말한다. 일반적으로 함수는 사용자 정의 코드에서 호출하는데, Callback은 이와 반대로 함수 내에서 사용자 정의 코드를 호출하게 된다. 호출 방향이 일반적인 경우와 반대이기 때문에 Call + Back이라고 일컬어진다. 콜백함수를 다른 코드로 전달할 때는 콜백 함수의 포인터, 람다 함수의 형태로 전달하며 필요에 따라 즉시 실행하거나 나중에 실행할 수 있다. 예시 간단한 예시로 콜백함수의 구현을 알아본다. 아래와 같이 입력 받은 숫자가 양수인지, 음수인..

Python 2024.01.25

[Python] ldap3 사용법

개요 보통 회사에서는 계정 관리, 인증 등에 LDAP을 사용하고 있는데, LDAP 서버에 저장된 정보 조회가 필요한 상황이다. Python으로 LDAP 서버에 요청할 수 있는 ldap3 라이브러리 사용방법을 간단히 적어둔다. ldap3는 간단히 server, connection 객체를 정의하고, 연결에 대해 명령을 실행하는 방식으로 사용한다. ldap3 라이브러리 설치 pip 등을 이용해 설치할 수 있다. pip install ldap3 ldap3 import ldap3에서 제공하는 클래스 등을 활용하기 위해 import 하여 사용한다. 보통 아래와 같이 사용하는 것 같다. from ldap3 import Server, Connection, ALL 서버 접근 Ldap 서버에 접근할 때는 접근할 서버의 주..

Python 2024.01.05

[Python] itertools.product - 데카르트 곱

데카르트 곱 (cartesian product) 곱집합 또는 데카르트 곱(product set, product)은 각 집합의 원소를 성분으로 하는 튜플의 집합이다. Python에서는 itertools.product 함수로 사용할 수 있는데, 이 글에서 사용 방법을 적어둔다. itertools.product itertools.product 함수는 중첩 for 문과 동등하다. 예로 들어 product(A, B)는 (x, y) for x in A for y in B라고 할 수 있다. from itertools import product A = 'xyz' B = [1, 2 ,3] print(*product(A, B)) itertools.product 중복 허용 집합 자신의 곱을 구할 때는 반복 횟수를 지정하는 ..

Python 2023.12.25