DataFrame.select_dtypes(
include = None,
exclude = None
)
El método de un dataframe select_dtypes devuelve el subconjunto del dataframe formado por las columnas de los tipos especificados, pudiendo especificarse los tipos que se quieren seleccionar y/o aquellos que se quieren excluir.
Los tipos pueden referenciarse por su nombre (np.number, por ejemplo) o por una cadena de texto ("category", por ejemplo).
- Si queremos seleccionar todos los tipos numéricos deberemos usar np.number o "number".
- El tipo object devuelve todas las columnas de tipo objeto, incluyendo los textos.
- Para seleccionar fechas podemos usar np.datetime64, "datetime" o "datetime64".
- Para seleccionar timedeltas podemos usar np.timedelta64, "timedelta" o "timedelta64".
- Si queremos seleccionar los tipos categóricos de pandas deberemos usar "category".
- Para seleccionar los tipos datetimezn de pandas podemos usar "datetimetz" o "datetime64[ns, tz]".
- include: Tipo o lista de tipos que se quieren incluir en la selección.
- exclude: Tipo o lista de tipos que se quieren excluir de la selección.
El método select_dtypes devuelve una vista del dataframe original con formato DateTime (con independencia del número de columnas devueltas).
Si partimos del dataset tips proveído por seaborn:
tips = sns.load_dataset("tips")
tips.head()
...podríamos seleccionar solo los campos numéricos (con independencia de su tipo exacto) con el siguiente código:
tips_number = tips.select_dtypes(np.number)
tips_number.head()
En el caso de proporcionar tanto el parámetro include como el exclude, se seleccionarán los campos que cumplan ambos criterios. Por ejemplo, el dataset tips incluye datos numéricos de tipos float e int:
tips.dtypes
total_bill float64
tip float64
sex category
smoker category
day category
time category
size int64
dtype: object
Si incluimos los tipos numéricos y excluimos el tipo float, el resultado incluye solo la columna "size":
tips_number = tips.select_dtypes(include = np.number, exclude = float)
tips_number.head()
Si, por el contrario, incluimos solo el tipo float pero excluimos los tipos numéricos, el resultado es un dataframe vacío:
tips_number = tips.select_dtypes(include = float, exclude = np.number)
tips_number.head()