이번 글에서는 polars에서 시간 window에 기반한 연산 방법인 group_by_dynamic에 대해서 알아 보겠습니다. 기본 개념 polars에서 group_by_dynamic 연산은 지정된 시간 단위로 데이터를 나누고, 각 시간 window 안에서 해당 컬럼의 group_by를 계산합니다. group_by_dynamic의 디폴트 옵션으로 ...
[polars] Boolean 컬럼에 대한 count와 sum
이번 글에서는 polars에서 Boolean 컬럼에 대한 count와 sum의 차이에 대해서 알아 보겠습니다. 기본 개념 polars에서 Boolean 컬럼을 대상으로 count()와 sum()을 수행했을 때의 기본 동작 원리는 다음과 같습니다. count() count()는 해당 컬럼의 “전체 값 개수”(결측값 제외)를 ...
[polars] anti_join - 한쪽 테이블에만 있는 행 반환
이번 글에서는 polars의 anti_join에 대해서 알아 보겠습니다. 기본 개념 Anti Join은 두 개의 테이블을 조인할 때, 한쪽 테이블에는 있지만 다른 테이블에는 존재하지 않는 행만 반환하는 join 방식입니다. SQL 기준으로, LEFT JOIN 후 NULL 값이 있는 행만 필터링하는 방식과 동일합니다. 코드 polars에서 anti...
[polars] 컬럼 제외
이번 글에서는 polars DataFrame에서 특정 컬럼을 제외하는 방법을 살펴보겠습니다. 데이터 코드에 사용된 예제 데이터는 아래와 같이 만들었습니다. import polars as pl # 예제 데이터 df = pl.DataFrame({ "A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]...
[polars] 결측값
이번 글에서는 polars DataFrame에서 결측값을 확인하는 방법을 살펴보겠습니다. 데이터 코드에 사용된 예제 데이터는 아래와 같이 만들었습니다. import polars as pl # 예제 데이터 df = pl.DataFrame({ "A": [1, 2, None, 4, 5], "B": [None, 2, 3, None, 5],...
[polars] datetime 기준 데이터 필터링
이번 글에서는 polars를 이용하여 특정 datetime 값을 기준으로 데이터를 필터링하는 다양한 방법을 살펴보겠습니다. 데이터 코드에 사용된 예제 데이터는 아래와 같이 만들었습니다. df는 id 컬럼에 대해 datetime 별 value 값이 있는 구조이며, reference_df는 각 id 별 reference_datetime이 기록되어 있습...
[python] list 타입 set theory - 합집합, 교집합 등
이번 글에서는 python list에 대해 합집합, 교집합 등 집합 연산에 대한 방법을 살펴보겠습니다. 기본 코드에 사용할 list는 아래와 같습니다. list1 = [1, 2, 3, 4, 5] list2 = [3, 4, 5, 6, 7] 합집합 (A ∪ B) set(list1) | set(list2) # {1, 2, 3, 4, 5, 6, 7}...
[python] contextlib - contextmanager
contextmanager는 Python의 contextlib 모듈에서 제공하는 데코레이터(@contextmanager)로, 컨텍스트 매니저(Context Manager)를 쉽게 구현할 수 있도록 도와주며, with 문을 사용할 수 있도록 만들어 주는 기능입니다. contextmanager 없이 컨텍스트 매니저를 직접 만들려면 __enter__와 _...
[Error] SchemaError: dtypes differ for column: Int64 != Float64
원인 해당 에러는 polars.read_parquet()로 데이터를 한번에 불러올 때, 특정 컬럼이 파일 별로 int와 float로 다르게 지정되어 타입이 맞지 않는다는 의미입니다. 저의 경우, 데이터를 split해 전처리를 한 뒤 저장한 parquet 파일들을 polars.read_parquet()로 한번에 불러올 때 발생했습니다. 전처리 단계에서...
[Error] ValueError: If using all scalar values, you must pass an index
원인 해당 에러는 pandas.DataFrame()을 생성할 때 모든 값이 스칼라(단일 값)인 경우, 명시적으로 인덱스를 지정해야 한다는 의미입니다. 저의 경우, 모든 값이 리스트나 배열이 아닌 스칼라 값인 딕셔너리를 데이터프레임으로 생성할 때 index를 지정하지 않아서 에러가 발생했습니다. 해결 방법 에러를 해결하기 위해 딕셔너리를 먼저 pan...