Pandas DataFrame.select_dtypes()
用法详解
DataFrame.select_dtypes()
是 Pandas 中用于按数据类型筛选列的方法,它可以帮助你快速选择特定数据类型的列进行分析或处理。
基本语法
DataFrame.select_dtypes(
include=None, # 包含的数据类型
exclude=None # 排除的数据类型
)
参数说明
参数 | 说明 |
---|---|
include | 选择包含的数据类型(字符串或列表) |
exclude | 选择排除的数据类型(字符串或列表) |
数据类型标识符
常用的数据类型标识符包括:
'number'
:所有数值类型(int, float等)'float'
:浮点型'int'
:整型'bool'
:布尔型'object'
:字符串或混合类型'datetime'
:日期时间'timedelta'
:时间差'category'
:分类数据
使用示例
1. 选择数值型列
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, 3], # 整型
'B': [1.1, 2.2, 3.3], # 浮点型
'C': ['x', 'y', 'z'], # 字符串
'D': pd.to_datetime(['2020-01-01', '2020-01-02', '2020-01-03']), # 日期时间
'E': [True, False, True] # 布尔型
})
# 选择所有数值型列
numeric_cols = df.select_dtypes(include='number')
print(numeric_cols)
输出:
A B
0 1 1.1
1 2 2.2
2 3 3.3
2. 排除特定类型列
# 排除字符串和日期时间列
non_obj_cols = df.select_dtypes(exclude=['object', 'datetime'])
print(non_obj_cols)
输出:
A B E
0 1 1.1 True
1 2 2.2 False
2 3 3.3 True
3. 组合使用include和exclude
# 选择数值型但排除整型
float_only = df.select_dtypes(include='number', exclude='int')
print(float_only)
输出:
B
0 1.1
1 2.2
2 3.3
高级用法
1. 选择多个数据类型
# 选择字符串和布尔型列
selected = df.select_dtypes(include=['object', 'bool'])
print(selected)
2. 使用Numpy数据类型
# 选择np.float64类型列
float64_cols = df.select_dtypes(include=[np.float64])
3. 实际应用场景
# 数据预处理示例:只对数值列做标准化
from sklearn.preprocessing import StandardScaler
numeric_cols = df.select_dtypes(include='number')
scaler = StandardScaler()
df[numeric_cols.columns] = scaler.fit_transform(numeric_cols)
注意事项
- 如果指定的类型在DataFrame中不存在,会返回空的DataFrame
- 可以同时使用
include
和exclude
参数 - 类型名称不区分大小写('number’和’NUMBER’等效)
- 对于自定义数据类型,需要使用实际的数据类型对象
性能提示
对于大型DataFrame,select_dtypes()
比手动遍历列并检查类型更高效,因为它是向量化操作。
select_dtypes()
是数据清洗和特征工程中非常有用的工具,特别是在需要按数据类型进行不同处理的场景下。