[Pandas] 데이터프레임 컬럼값 각각 타입 확인하고 바꾸기

반응형
    반응형

    데이터프레임 컬럼값 타입 확인하고 바꾸기

    데이터를 외부에서 받아오면 불가피하게 타입이 고르지 못하고 중구난방으로 다운로드됩니다. 이 상태로 데이터프레임으로 전체 행, 열 계산을 하려고 할 때 애를 먹을 수 있습니다. 이번 포스팅은 컬럼값 타입을 확인하고 혹시 다른 타입이 있다면 어떻게 바꿔야 하는지에 대해 소개합니다.

    컬럼값 타입을 확인하려면 isintance 함수를 알아야 합니다.

    파이썬 타입 확인 함수 isintance 

    파이썬에서 데이터타입을 boolean으로 판단하려면 isinstance()함수 사용합니다. isintance는 파이썬의 내장함수라서 따로 설치할 라이브러리가 없습니다. 파이썬이 설치되어 있다면 바로 쓸 수 있습니다. isinstance()는 object(변수나 객체), classinfo(타입) 두가지 인자를 가져야 합니다. object에 객체를 넣고 확인할 타입 형태를 classinfo에 넣습니다.

     

    isinstance(object, classinfo)

     

    다음과 같이 합니다.


    st_list가 리스트인지 확인하고 맞다면 True를 반환합니다.

    isinstance() 함수와 type() 함수의 차이점

    isinstance와 type은 모두 데이터타입을 확인하는 용도로 사용됩니다. 둘의 차이점은 출력형식인데 isinstance는 boolean 형식, type은 객체 유형을 반환합니다.

    컬럼값 확인하기

    boolearn 타입으로 반환하는 isintance를 이용하면 컬럼값을 확인하는데 용이합니다. 데이터프레임에서 컬럼 값 중에 다른 타입이 있는지 확인하고 싶다면 isintance 을 사용합니다.

    한 칼럼의 해당 유형이 있는지 확인하기

    한 컬럼에 해당 유형이 있는지 확인하는 예제입니다.

    import pandas as pd
    # 예제 데이터프레임 생성
    data = {
        'A': [1, 2, 3],
        'B': [[1, 2], [3, 4], 5],
        'C': ['x', 'y', 'z']
    }
    
    df = pd.DataFrame(data)
    
    # 컬럼 값 중 리스트 타입이 있는지 확인하는 함수
    
    def has_list_type(column):
        return any(isinstance(item, list) for item in column)
    
    # 각 컬럼에 대해 리스트 타입이 있는지 확인
    result = has_list_type(data['B'])
    
    print(result)

    각 컬럼에 해당 타입이 있는지 확인

    모든 컬럼에 대해 확인하려면 아래와 같이 합니다.

    import pandas as pd
    
    # 예제 데이터프레임 생성
    data = {
        'A': [1, 2, 3],
        'B': [[1, 2], [3, 4], 5],
        'C': ['x', 'y', 'z']
    }
    
    df = pd.DataFrame(data)
    
    # 컬럼 값 중 리스트 타입이 있는지 확인하는 함수
    def has_list_type(column):
        return any(isinstance(item, list) for item in column)
    
    # 각 컬럼에 대해 리스트 타입이 있는지 확인
    result = {col: has_list_type(df[col]) for col in df.columns}
    
    print(result)

    컬럼값 유형 바꾸기

    이제 유형을 바꿔주어야 하는데 apply 함수를 이용하면 손쉽게 할 수 있습니다. 'B'컬럼값을 모두 리스트로 바꾸어 보겠습니다.

    df['B'] = df['B'].apply(lambda x: x if isinstance(x, list) else [x])
    
    print(df)

    함께보면 좋은글

    [Pandas] 함수 적용하기(map,apply, applymap)

    [Pandas] 그룹화된 데이터프레임 필터링하기

    [Pandas] 데이터프레임 문자열 조건 검색법 총정리

     

    댓글

    Designed by JB FACTORY

    ....