Python 207

[Pandas] sort_values - DataFrame 값 기준 정렬

개요 DataFrame을 특정 컬럼들을 기준으로 정렬하고 싶다. 방법을 적어둔다. + 이전에 2022.12.20 - [Python] Pandas - 데이터프레임 데이터 조작 1에서 적어두긴 했지만…… 검색에 걸리지도 않아서 다시 작성한다! DataFrame.sort_values DataFrame.sort_values 함수는 값을 기준으로 데이터프레임을 정렬한다. DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None) - by : 정렬 기준. 문자열 또는 리스트로 전달한다. - axis : 정렬 축. 0 또는 index이..

[Python] configparser - .ini 파일 읽기

개요 AWS 자격증명파일, airflow.cfg 등과 같은 구성 파일은 .env 파일과 비슷한 형식인데 섹션 구분이 있다는 점이 조금 다르다. 확인해 보니 해당 파일 등은 configparser라는 라이브러리를 이용해 다룰 수 있는 것 같다. 사용 방법을 적어둔다. 예시 파일 이 글에서는 test.ini라는 파일로 저장한 아래 데이터를 예시로 글을 작성한다. [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [forge.example] User = hg [topsecret.server.example] Port = 50022 ForwardX11 = no configparser 모듈 임포트 다음과..

Python 2024.02.12

[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 함수는 전달받은 컬럼을 대상으로 ..

[Pandas] DataFrame 행(row) 순회

개요 데이터를 Pandas 데이터프레임으로 처리하려고 하는데, 데이터프레임 행 전체를 순회하면서 처리해야 하는 작업이 발생했다. 데이터프레임 행 순회를 하는 방법을 간단히 정리해 둔다. 물론 데이터프레임의 크기가 클수록 순회하는 것보다 벡터화 연산으로 처리하는 것이 유리하다. 인덱싱 아래와 같은 데이터프레임이 있다고 하자. import pandas as pd df = pd.DataFrame({ '고객번호': [1001, 1002, 1003, 1004], '이름': ['둘리', '도우너', '또치', '길동'] }, columns=['고객번호', '이름']) 데이터프레임의 인덱스 정보는 index 속성으로 접근할 수 있다. for문으로 데이터프레임의 인덱스 정보를 순회하면서 loc, iloc 등을 이용해 ..

[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

[Python] 깊은 복사 (deep copy)

개요 이번 글에서는 2023.12.18 - [Python] 얕은 복사 (Shallow copy)에서 정리한 얕은 복사와 반대되는 개념인 깊은 복사에 대해 정리한다. 깊은 복사 깊은 복사(deep copy)란 복사 수행 시 객체 자체를 다른 메모리 공간에 복사하는 것의 의미한다. 복사 시 참조 메모리 주소가 달라지기 때문에 변수 간의 독립성을 유지할 수 있다. 깊은 복사 수행 깊은 복사는 copy.deepcopy를 이용해 수행할 수 있다. 아래 코드는 가변 객체를 원소로 하는 list에 대해 깊은 복사를 수행하는데, 실제로 가변 객체 원소인 1번 원소의 주소값을 확인해 보면, from copy import deepcopy a = ["python2", ["python3"]] b = deepcopy(a) pr..

Python 2023.12.19

[Python] 얕은 복사 (Shallow copy)

개요 2023.12.14 - [Python] 불변 객체 (Immutable) 2023.12.15 - [Python] 가변 객체 (Mutable) 위 두 개 글에서 불변 객체와 가변 객체에 대해 정리했는데, 이 글에서는 얕은 복사에 대해 정리해보려고 한다. 얕은 복사 얕은 복사(Shallow copy)란 객체의 참조값, 주소값만 복사하는 것을 의미한다. 객체의 주소값을 복사하기 때문에 복사된 값에 변경이 발생하면 복사한 값도 영향을 받아 두 변수 간에 독립성이 성립하지 않게 되는 특징이 있다. 다만, 변수의 독립성과 관련해서는 참조한 객체가 가변 객체인 경우에만 문제가 되며, 관련해서는 사실 2023.12.15 - [Python] 가변 객체 (Mutable)에서 살펴보았다. 따라서 이 글에서는 얕은 복사를..

Python 2023.12.18