본문 바로가기
Python

[pandas] 데이터 타입에 따른 column 추출

by ds31x 2024. 1. 12.

DataFrame의 경우, dtypes attribute를 통해 각 column의 data type을 가지고 있음. (Series 형임)


DataFrame객체들을 서로 빼주는 등의 연산을 할 때, numberic type이 아닌 column이 있을 경우 문제가 발생함.
때문에 numberic type으로 구성된 columns를 추출해야 하는 경우가 있음.


다음의 코드를 참고할 것.

import pandas as pd

df = pd.DataFrame(
    {
        "test_id" : [ 0, 1, 2, 3, 4, 5],
        "test_int": [ 10, 20, 30, 40, 50, 60],
        "test_obj0": [ "a", "b", "c", "d", "e", "f"],
        "test_float": [0., 1., 2.,  3., 4., 5.],
        "test_obj1": [ "A", "B", "C", "D", "E", "F"]
    }
)

# object가 아닌 column들로 구성된 series의 index를 통해, 숫자로 구성된 column들만을 추출함.
df_num = df[df.dtypes[df.dtypes != 'object'].index] 

df_num

특정 데이터 타입에 해당하는 columns를 추출하는 보다 단순한 방법은

DataFrame의 객체에서 지원하는 select_dtypes 메서드를 사용하는 것임.

df_num = df.select_dtypes(include=[np.number])

df_num

 

exclude를 이용하면, 해당 data type이 아닌 columns로 구성된 DataFrame 객체를 얻음.

df_obj = df.select_dtypes(exclude=[np.number])

df_obj

 

includeexclude를 혼재하여 사용하여 보다 복잡하게 columns를 지정할 수 있음.


Pandas의 주요 자료형.

  1. numberic type : np.number or 'number' 로 지정.
  2. string type : object
  3. category type : category
  4. datetime (날짜 및 시간 관련) type : np.datetime64, 'datetime', 'datetime64'
  5. timedelta type : 'timedelta', 'timedelta64'

Python의 float, int 등을 사용할 수도 있음.

728x90

'Python' 카테고리의 다른 글

[Python] bytes and bytearray: Binary Data for Python  (0) 2024.01.15
[python] Text mode vs. Binary mode: File open  (0) 2024.01.15
[pandas] merge 예제.  (0) 2024.01.12
[pandas] DataFrame 합치기 : concat 과 merge  (0) 2024.01.12
[Term] ETL Tools  (0) 2024.01.10