¿Cómo encuentro columnas numéricas en Pandas?

Digamos que df es un DataFrame de pandas. Me gustaría encontrar todas las columnas de tipo numérico. Algo como:

 isNumeric = is_numeric(df) 

Podría usar el método select_dtypes de DataFrame. Incluye dos parámetros incluyen y excluye. Así que es numérico se vería así:

 numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'] newdf = df.select_dtypes(include=numerics) 

Puede usar el siguiente comando para filtrar solo columnas numéricas

 df._get_numeric_data() 

Ejemplo

 In [32]: data Out[32]: AB 0 1 s 1 2 s 2 3 s 3 4 s In [33]: data._get_numeric_data() Out[33]: A 0 1 1 2 2 3 3 4 

Respuesta simple de una línea para crear un nuevo dataframe con solo columnas numéricas:

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

Si quieres los nombres de las columnas numéricas:

 df.select_dtypes(include=[np.number]).columns.tolist() 

Código completo:

 import pandas as pd import numpy as np df = pd.DataFrame({'A': range(7, 10), 'B': np.random.rand(3), 'C': ['foo','bar','baz'], 'D': ['who','what','when']}) df # ABCD # 0 7 0.704021 foo who # 1 8 0.264025 bar what # 2 9 0.230671 baz when df_numerics_only = df.select_dtypes(include=[np.number]) df_numerics_only # AB # 0 7 0.704021 # 1 8 0.264025 # 2 9 0.230671 colnames_numerics_only = df.select_dtypes(include=[np.number]).columns.tolist() colnames_numerics_only # ['A', 'B'] 
 df.select_dtypes(exclude=['object']) 
 def is_type(df, baseType): import numpy as np import pandas as pd test = [issubclass(np.dtype(d).type, baseType) for d in df.dtypes] return pd.DataFrame(data = test, index = df.columns, columns = ["test"]) def is_float(df): import numpy as np return is_type(df, np.float) def is_number(df): import numpy as np return is_type(df, np.number) def is_integer(df): import numpy as np return is_type(df, np.integer) 

Adaptar esta respuesta , podrías hacer.

 df.ix[:,df.applymap(np.isreal).all(axis=0)] 

Aquí, np.applymap(np.isreal) muestra si cada celda en el dataframe es numérica, y .axis(all=0) verifica si todos los valores en una columna son Verdaderos y devuelve una serie de Booleanos que pueden usarse para indexar Las columnas deseadas.

Este es otro código simple para encontrar una columna numérica en el dataframe de pandas,

  numeric_clmns = df.dtypes[df.dtypes != "object"].index 

Por favor vea el siguiente código:

 if(dataset.select_dtypes(include=[np.number]).shape[1] > 0): display(dataset.select_dtypes(include=[np.number]).describe()) if(dataset.select_dtypes(include=[np.object]).shape[1] > 0): display(dataset.select_dtypes(include=[np.object]).describe()) 

De esta manera, puede verificar si los valores son numéricos, como float y int o los valores de srting. la segunda instrucción if se usa para verificar los valores de cadena a los que hace referencia el objeto.