분류 전체보기 1187

[Pandas] isin - 리스트로 필터링하기

개요 Pandas에서 데이터프레임에 대한 열 필터링을 할 때는 아래와 같은 코드를 사용한다. df[df['column'] == 'value'] 만약 조건이 되는 값이 여럿일 때는 OR 연산자를 사용할 수 있다. df[(df['column'] == 'value1')] | (df['column'] == 'value2')] 하지만 조건이 될 수 있는 값이 보다 많을 때는 OR 연산자를 사용하는 것보다 isin 함수를 사용하는 것이 좋을 것 같다. 사용 방법을 적어둔다. DataFrame.isin isin 함수는 DataFrame의 요소가 값에 포함되어 있는지를 판단한다. 값은 iterable, Series, Dictionary, DataFrame 등으로 지정할 수 있다. 예시 데이터 ) data = {"반" ..

[Pandas] 결측치를 None으로 치환

개요 Pandas로 데이터프레임을 처리하다 보면 아래와 같이 None과 NaN이 혼재되어 있는 경우가 있을 수 있다. 이때 결측치를 None으로 치환하는 방식으로 처리하려고 한다. 내용을 적어둔다. NaN과 None의 차이 먼저 결측치와 None은 다르다는 점을 이해해야 한다. NaN은 float 객체로 벡터화 연산을 허용하는 반면, None은 Python의 NoneType 객체로 벡터화 연산을 허용하지 않는다. print(f'type(None): {type(None)}') print(f'type(np.NaN): {type(np.NaN)}') 또한 NaN은 어떤 값과 비교해도 같지 않다고 판단하기 때문에 두 값을 비교 연산자로 확인해 보면 서로 같지 않다. print(np.NaN == None) # Fa..

[Pandas] explode - 데이터형이 리스트인 컬럼 전개

개요 아래와 같이 데이터형이 리스트인 컬럼을 포함하는 데이터프레임이 있다고 하자. df = pd.DataFrame({'A': [[0, 1, 2], 'foo', [], [3, 4]], 'B': ['a', 'b', 'c','d'], 'C': [['a', 'b', 'c'], np.nan, [], ['d', 'e']], }) 리스트인 컬럼을 여러 행으로 펼쳐서 A와 B가 1 : 1 매핑이 되도록 변경하고 싶다. 방법을 알아본다. DataFrame.explode explode 함수는 리스트와 유사한 각 요소를 행으로 변환한다. DataFrame.explode(column, ignore_index=False) column 매개변수에는 분할할 컬럼을 지정하는데 단일 문자열이나 튜플로 지정할 수 있다. 단, 튜플로 지..

[Hive] 테이블 - SerDe

개요 2024.01.18 - [Hive] 테이블 - 개념 및 유형에 이어서 이 글에서는 Hive가 데이터를 해석하는 방법을 제공하는 SerDe라는 개념에 대해 적어둔다. SerDe SerDe는 Serializer and Deserializer의 약어다. Hive는 FileFormat과 SerDe를 이용해 테이블 행을 읽고 쓴다. 파일을 읽을 때는 FileFormat을 이용한 후, Deserializer를 사용해 파일 데이터를 테이블 형식에 맞는 데이터로 변환한다. 반대로 파일을 쓸 때는 데이터를 Serializer를 이용해 key-value 형태로 변환한 후 FileFormat을 사용하여 파일로 저장한다. Hive 기본 SerDe Hive는 기본적으로 Avro, ORC, RegEx, Thrift, Par..

Hadoop EcoSystem 2024.02.16

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