Python/NumPy | Pandas 72

[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 등을 이용해 ..

[Pandas] DataFrame CROSS JOIN

CROSS JOIN CROSS JOIN은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 것을 뜻하며, 두 테이블의 각 행의 개수를 곱한 만큼의 결과가 나온다. Pandas DataFrame을 join 하는 법은 2022.12.25 - [Python] Pandas - 데이터프레임 합성 1 (merge / join)에서 살펴보았는데, cross join에 대해서는 정리하지 않아서 추가로 정리한다. pandas 1.2 이상의 버전인 경우 위의 예시 그림처럼 hair type과 hair style 두 개의 DataFrame이 있다고 하자. import pandas as pd import numpy as np hair_type = pd.DataFrame({'Hair Type' : ['A', 'B'..

[Python] Pandas - datetime64 Series를 datetime.datetime으로 변환

개요 다음과 같은 날짜 데이터로 이루어진 DataFrame이 있다고 하자. import pandas as pd import numpy as np date_str = ["2018, 1, 1", "2018, 1, 4", "2018, 1, 5", "2018, 1, 6"] df = pd.DataFrame(pd.to_datetime(date_str), columns=['diagnosis_date']) 이 날짜 데이터를 Python의 datetime 타입의 데이터를 원소로 하는 리스트로 변환하고자 다음과 같이 실행하면…… list_date = df['diagnosis_date'].values.tolist() 이런 숫자값이 나온다. 아무래도 Timestamp로 취급된 것 같다. 어떻게 해야 datetime 객체를 원..

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

[Python] Pandas - read_csv 날짜 데이터 읽기

개요 아래와 같은 CSV 파일이 있다고 하자. date, idx, val 1/5/2020 10:00:00, 1, 10 1/5/2020 10:10:00, 1, 12 1/5/2020 10:20:00, 1, 17 1/5/2020 10:00:00, 2, 11 1/5/2020 10:10:00, 2, 14 1/5/2020 10:20:00, 2, 16 날짜 형식의 데이터인 date 컬럼이 존재하는데, 이 파일을 read_csv로 읽은 후 데이터형을 확인하면 다음과 같다. 코드) import numpy as np import pandas as pd f_name = 'sample.csv' df = pd.read_csv(f_name) print(df.info()) datetime 형이 아니라 object 형 데이터로 추론..

[Python] Pandas - DataFrame.dtypes를 Dictionary로 변환

개요 DataFrame의 데이터 타입을 확인할 때는 dtypes 속성을 사용한다. 그리고 dtypes 속성은 Series이다. 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) print(df.dtypes) print(f'type : {type(df.d..

1 2 3 4 5 6 ··· 8