2024/02 21

[Pandas] 데이터형이 리스트인 컬럼 empty 여부 확인

개요 데이터형이 리스트인 컬럼을 데이터프레임이 있다고 하자. 컬럼의 리스트가 비어있지 않은 행만 필터링하고 싶다. 방법을 적어둔다. 예시 데이터프레임 import pandas as pd df = pd.DataFrame({"col": [[1], [2, 3], [], [4, 5, 6], []]}) 이 데이터프레임을 필터링하여 인덱스가 0, 1, 3인 행만 남기려고 한다. 방법 1. str.len으로 리스트 길이 확인 str.len을 활용하면 리스트의 길이를 확인할 수 있다. print(df['col'].str.len()) 이를 이용하여 리스트의 길이가 0이 아닌 행만 필터링한다. df[df['col'].str.len() != 0] 다만 벡터화 연산을 사용한 것이 아니기 때문에 데이터프레임의 크기가 크다면 실..

[Pandas] compare - DataFrame 비교

개요 2024.02.09 - [Pandas] DataFrame 비교 - equals에 이어서 DataFrame을 비교할 수 있는 방법 중 하나인 compare에 대해 정리한다. DataFrame.compare DataFrame.compare 함수는 데이터프레임 간 일치 여부를 반환하는 equals와 달리 데이터프레임 간 차이점을 반환한다. DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False, result_names=('self', 'other')) - other : 비교할 데이터프레임 - align_axis: 비교 결과 정렬 축 - keep_shape : True이면 같은 값을 가진 셀도 포함하여 출력한다. - keep_eq..

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

[Hive] 테이블 - 스큐 (SKEW)

개요 2024.01.19 - [Hive] 테이블 - 파티션, 2024.02.02 - [Hive] 테이블 - 버켓팅 (bucketing)에 이어서 이번 글에서는 Hive 테이블의 스큐 (SKEW)에 대한 부분을 알아보려고 한다. 스큐 (SKEW) 스큐란 컬럼에 특정 데이터가 빈번하게 저장되는 경우 분리해서 저장하는 기능이다. 데이터를 디렉터리에 나눠서 저장하는 파티션과 비슷하지만, 파티션이 데이터를 크게 구분하는 용도로 사용한다면 스큐는 컬럼의 데이터를 구분할 때 사용한다. 스큐는 하나의 컬럼의 값이 특정 값에 몰려있을 때 유용하다. 예로 들어 num 컬럼에는 1부터 1000까지의 데이터가 저장되는데 주로 1, 2가 저장된다고 하자. 이 테이블을 파티셔닝하면 num=1, num=2, … , num=1000..

Hadoop EcoSystem 2024.02.07

[Pandas] DataFrame 행(row) 순회

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

[BOJ] 11727 - 2×n 타일링 2

문제 문제 : https://www.acmicpc.net/problem/11727 양의 정수 n을 입력받아 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 10,007로 나눈 나머지를 구하여라. + 이번 글도 다른 사람 풀이를 참고한다. 점화식 n = 1일 때부터 시작해 결과를 그려보면 아래 그림과 같다. 조금 더 그려보면 아래와 같은 패턴이 반복되는 것을 확인할 수 있다. 즉, 확인한 패턴을 점화식으로 표현하면 다음과 같다. $$ counts(n) = counts(n - 1) + 2counts(n - 2) $$ 이전 값 하나만 참조할 뿐 아니라, 여러 값을 참조하는 경우도 충분히 있을 수 있다……. 생각해보면 피보나치 함수도 그렇다. 구현 이전에 계산한 값을 반복적으로 확인해야 하..

Algorithm/백준 2024.02.05

[Hive] 테이블 - 버켓팅 (bucketing)

개요 2024.01.19 - [Hive] 테이블 - 파티션에 이어서 이번 글에서는 hive 성능에 관련이 있는 버켓팅 개념에 대해서 간단히 이해해보려고 한다. bucketing bucketing의 기본 아이디어는 특정 컬럼에 대한 HASH 값을 기준으로 파일을 나눠서 저장하는 것이다. 달리 표현하면, 특정 컬럼의 값을 해시 처리한 후 지정한 수의 파일로 분리해서 저장하는 것이다. bucketing을 사용하면 쿼리의 성능을 향상시킬 수 있다. 예로 들어 WHERE 조건에 버킷 컬럼을 사용하거나, 테이블 JOIN 시 bucket 기준 컬럼을 사용하면 해당 키의 해시값에 해당하는 버킷만 데이터를 스캐닝할 수 있기 때문이다. 테이블 버켓팅 설정 버켓팅은 테이블 생성 시 CLUSTERED BY ~ INTO n B..

Hadoop EcoSystem 2024.02.02
1 2 3