[Python pandas] pandas DataFrame의 데이터 유형별 칼럼 선택, 배제
Python 분석과 프로그래밍/Python 데이터 전처리 2023. 1. 3. 22:06이번 포스팅에서는 여러개의 칼럼을 가지는 pandas DataFrame에서 특정 데이터 유형의 칼럼을 선택하거나 배제하는 방법을 소개하겠습니다.
(1) pandas DataFrame 의 칼럼별 데이터 유형 확인: df.dtypes
(2) pandas DataFrame 에서 특정 데이터 유형의 칼럼을 선택하기: df.select_dtypes(include)
(3) pandas DataFrame 에서 특정 데이터 유형의 칼럼을 제외하기: df.select_dtypes(exclude)
먼저, 예제로 사용할 pandas DataFrame을 만들어보겠습니다. 데이터 유형으로는 int64, object, boolean, folat64, datetime64 의 5개 서로 다른 유형을 포함하도록 하였습니다.
import pandas as pd
## sample pandas DataFrame
df = pd.DataFrame({
'x1': [1, 2, 3], # int64
'x2': ['a', 'b', 'c'], # object
'x3': [True, False, False], # boolean
'x4': [1.0, 2.0, 3.0], # float64
'x5': [pd.Timestamp('20230101'), pd.Timestamp('20230102'), pd.Timestamp('20230103')] # datetime64
})
print(df)
# x1 x2 x3 x4 x5
# 0 1 a True 1.0 2023-01-01
# 1 2 b False 2.0 2023-01-02
# 2 3 c False 3.0 2023-01-03
# 3 4 d True 4.0 2023-01-04
(1) pandas DataFrame 의 칼럼별 데이터 유형 확인: df.dtypes
## (1) pd.DataFrame.dtypes: data type of each column.
df.dtypes
# x1 int64
# x2 object
# x3 bool
# x4 float64
# x5 datetime64[ns]
# dtype: object
(2) pandas DataFrame 에서 특정 데이터 유형의 칼럼을 선택하기 (include)
pd.DataFrame.select_dtypes(include=None) 메소드를 사용하여 원하는 데이터 유형을 include = 'data type' 옵션에 넣어주면 됩니다. 아래 예시에서는 차례대로 include='int64', 'object', 'bool', float64', 'datetime64' 별로 칼럼을 선택해보았습니다.
## (2) DataFrame.select_dtypes(include=None, exclude=None)
## Return a subset of the DataFrame’s columns based on the column dtypes.
## including the dtypes in include.
df.select_dtypes(include='int64') # int
# x1
# 0 1
# 1 2
# 2 3
# 3 4
df.select_dtypes(include='object')
# x2
# 0 a
# 1 b
# 2 c
# 3 d
df.select_dtypes(include='bool')
# x3
# 0 True
# 1 False
# 2 False
# 3 True
df.select_dtypes(include='float64') # float
# x4
# 0 1.0
# 1 2.0
# 2 3.0
# 3 4.0
df.select_dtypes(include='datetime64') # datetime
# x5
# 0 2023-01-01
# 1 2023-01-02
# 2 2023-01-03
# 3 2023-01-04
한꺼번에 여러개의 데이터 유형의 칼럼을 선택하고자 할 때는 df.select_dtypes(include=[dtype1, dtype2, ...]) 처럼 include 옵션에 여러개의 데이터 유형을 리스트로 넣어주면 됩니다. 아래 예시에서는 ['int64', 'float64'] 의 두 개의 숫자형 칼럼을 선택해 보았습니다.
숫자형 (numeric data type) 의 칼럼을 선택하는 또 다른 방법은 df.select_dtypes(include='number') 를 해도 됩니다.
## (a) include=[dtype, dtype, ...]
df.select_dtypes(include=['int64', 'float64']) # 여러개의 data type
# x1 x4
# 0 1 1.0
# 1 2 2.0
# 2 3 3.0
# 3 4 4.0
## (b) To select all numeric types, use np.number or 'number'
df.select_dtypes(include='number') # int, float
# x1 x4
# 0 1 1.0
# 1 2 2.0
# 2 3 3.0
# 3 4 4.0
숫자형('int64', 'float64') 의 칼럼 이름을 리스트로 반환하려면 columns 로 칼럼 이름을 가져와서 list() 로 묶어주면 됩니다.
## column names of numeric types
list(df.select_dtypes(include='number').columns)
# ['x1', 'x4']
(3) pandas DataFrame 에서 특정 데이터 유형의 칼럼을 제외하기 (exclude)
위의 (2)번이 특정 데이터 유형을 포함(include)하는 칼럼을 선택하는 것이었다면, 이번에는 특정 데이터 유형을 제외(exclude) 한 나머지 칼럼을 선택하는 방법입니다. 아래 예시에서는 'int64' 데이터 유형을 제외(exclude='int64')한 나머지 칼럼을 반환하였습니다.
## excluding the dtypes in exclude.
df.select_dtypes(exclude='int64')
# x2 x3 x4 x5
# 0 a True 1.0 2023-01-01
# 1 b False 2.0 2023-01-02
# 2 c False 3.0 2023-01-03
# 3 d True 4.0 2023-01-04
[Reference]
pandas.DataFrame.select_dtypes(include=None, exclude=None)
: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.select_dtypes.html
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)
'Python 분석과 프로그래밍 > Python 데이터 전처리' 카테고리의 다른 글
[Python Numpy] 반복자 enumerate() vs. 다차원 반복자np.ndenumerate() (0) | 2023.03.05 |
---|---|
[Python pandas] DataFrame.filter(): 특정 조건에 맞는 칼럼이나 행을 선택해 가져오기 (0) | 2023.01.17 |
[Python] 리스트 원소 데이터 유형 변환, 원소 값 변환, 빼기, 정렬 (0) | 2023.01.02 |
[Python] Dictionary (Key: Value 매핑) 를 이용하여 여러개의 문자열 변경하기 (replace multiple strings using Dictionary and replace() method) (0) | 2022.12.18 |
[Python SciPy] 원소 간 거리 계산하기 (0) | 2022.03.13 |