pandas 19

[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 매개변수에는 분할할 컬럼을 지정하는데 단일 문자열이나 튜플로 지정할 수 있다. 단, 튜플로 지..

[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이..

[Pandas] DataFrame 행(row) 순회

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

[Python] Pandas - 여러 컬럼 추가

개요 DataFrame에 스칼라 값인 컬럼이 여럿 추가하고 싶을 때는 단순 할당을 반복하거나, import numpy as np import pandas as pd map_code_message = [ {'code':'00','return_message':'Continue'}, {'code':'01','return_message':'Switching Protocol'}, {'code':'02','return_message':'Processing'}, {'code':'03','return_message':'Early Hints'}, ] df = pd.DataFrame(map_code_message) df['server'] = 'web' df['stage_env'] = 'dev' insert 함수를 반복해서..

[Python] Pandas - Dataframe 차집합 구하기

개요 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1 (merge / join)에서 두 데이터프레임에 대한 INNER JOIN과 OUTER JOIN(left, right, full)에 대해서 살펴봤다. 이 글에서는 두 데이터프레임에 대한 LEFT ANTI JOIN, RIGHT ANTI JOIN... 즉, 차집합을 구하는 방법을 정리한다. 예시 데이터 예시로 아래의 데이터프레임 두 개를 사용하여 글을 작성한다. import pandas as pd df1 = pd.DataFrame( [ (1, 345, 'B', True), (2, 100, 'C', False), (3, 300, 'B', False), (4, 151, 'A', False), (5, 212, 'A', True) ],..

[Python] Pandas - read_csv 컬럼 타입 지정

개요 Pandas.read_csv 함수를 이용해 CSV 파일을 읽어 들이면 데이터의 타입을 추론하여 DataFrame을 생성한다. 그러다 보니 간혹 문자열로 저장한 네 자리 숫자의 형식이나 소수점 둘째 자리 등의 자릿수가 휘발될 때가 있다. 예시 코드 import numpy as np import pandas as pd map_code_message = [ {'code':'00','return_message':'Continue'}, {'code':'01','return_message':'Switching Protocol'}, {'code':'02','return_message':'Processing'}, {'code':'03','return_message':'Early Hints'}, ] df = pd...

1 2