Mientras trabaja en proyectos de ciencia de datos, generalmente obtiene una gran cantidad de datos. Pero es posible que deba trabajar solo con un subconjunto de columnas de los datos. Esta selección de datos necesarios se realiza para simplificar las tareas. Además, las velocidades de cálculo también se mejoran al trabajar con un conjunto de datos más pequeño. Hay varias maneras de seleccionar columnas de trama de datos, incluyendo loc
, iloc
, filter
, etc. Este post cubre todos los métodos con ejemplos.
Crear un conjunto de datos de muestra
Comience creando un marco de datos de pandas simple como se muestra a continuación. Tiene 6 columnas.
# Import packages import pandas as pd # Create a dataframe df = pd.DataFrame( data= [['HR', 'Orange', 'Wheat', 30, 165, 4.6], ['DL', 'Purple', 'Flour', 2, 70, 8.3], ['MH', 'Red', 'Mango', 12, 120, 9.0], ['AS', 'Black', 'Apple', 4, 80, 3.3], ['GJ', 'Blue', 'Milk', 32, 180, 1.8], ['KL', 'Green', 'Melon', 33, 172, 9.5], ['PB', 'Magenta', 'Beans', 69, 150, 2.2]], columns=['State', 'Color', 'Food', 'Average Age', 'Average Height', 'Score'] ) df
1. Selección de columna básica
Una de las formas más básicas en pandas para seleccionar columnas del marco de datos es pasando la lista de columnas al operador de indexación del objeto del marco de datos.
# Selecting columns by passing a list of desired columns df[['Color', 'Score']]
2. Selección de columnas mediante la lista de columnas
El dataframe_name.columns
devuelve la lista de todas las columnas de la trama de datos. Puede usar esto como una de las formas de acceder a múltiples columnas en pandas. Debe pasar la lista modificada de columnas en el operador de indexación del marco de datos. Este método se puede realizar de dos formas:
Puede dividir los nombres de columna deseados de la lista de todas las columnas devueltas dataframe_name.columns
por indexación.
# slicing df.columns to access the last two columns of the dataframe df[df.columns[-2:]]B. Búsqueda de columnas deseadas usando
isin()
La función se usa para verificar si un elemento está presente en la lista. Aquí, la función se puede usar para verificar si el nombre de una columna está presente en la lista, así como la lista de columnas deseadas. Esto ayuda a seleccionar varias columnas de la lista de todas las columnas. La función devuelve una matriz booleana, donde valor denota que el nombre de la columna estaba presente en ambas listas. isin()
, the isin()
df.columns
True
# Creating the boolean mask booleanMask = df.columns.isin(['State', 'Food']) # saving the selected columns selectedCols = df.columns[booleanMask] # selecting the desired columns df[selectedCols]
3. Usar .loc y .iloc para seleccionar columnas por nombre o posición
Los pandas y los indexadores se pueden usar con el marco de datos de pandas para reducir un marco de datos grande en un marco de datos pequeño. Estos indexadores se pueden utilizar para la selección de filas y columnas..loc
.iloc
.loc
The loc
toma nombres de columnas o listas de columnas y devuelve una fila o un marco de datos. El indexador toma tanto filas como columnas. Por lo tanto, para seleccionar solo columnas del marco de datos, puede dejar la división de filas como :
, lo que seleccionará todas las filas del marco de datos.
Para la división de columnas, puede pasar el nombre de la columna que se seleccionará.
# .loc single column selection df.loc[:, 'Food' ]
0 Wheat 1 Flour 2 Mango 3 Apple 4 Milk 5 Melon 6 Beans Name: Food, dtype: object
Si desea seleccionar varias columnas, pase una lista de columnas.
# .loc multiple column selection df.loc[:, ['State', 'Food'] ]B. Usando indexador
.iloc
The iloc
indexador es similar al indexador. La única diferencia es que toma índices de columnas o índices de listas de columnas y devuelve una fila o marco de datos..loc
iloc
Aquí también, puede dejar la división de filas :
para seleccionar todas las filas y para la división de columnas, puede pasar los índices de la columna o una lista de índices de las columnas que se seleccionarán.
# .iloc single column selection df.iloc[:, 0]
0 HR 1 DL 2 MH 3 AS 4 GJ 5 KL 6 PB Name: State, dtype: object
# .iloc single column selection df.iloc[:, [0, 2, 3] ]
4. Usar métodos de filtro para seleccionar columnas que contienen ciertas palabras.
Puede usar la función de filtro del marco de datos de pandas para seleccionar columnas que contengan una cadena específica en los nombres de las columnas.
El parámetro like
de la función define esta cadena específica. Si el nombre de una columna contiene la cadena especificada, esa columna se seleccionará y se devolverá el marco de datos..filter
# selecting columns where column name contains 'Average' string df.filter(like='Average')
5. Pandas Selecciona columnas según su tipo de datos.
El marco de datos de Pandas tiene la función select_dtypes
, que tiene un include
parámetro. Especifique el tipo de datos de las columnas que desea seleccionar usando este parámetro. Esto puede resultarle útil si desea seleccionar solo columnas de tipos de datos específicos del marco de datos.
# selecting integer valued columns df.select_dtypes(include=['int64'])
Consejos prácticos
- También puede seleccionar columnas basadas en reglas de expresiones regulares. Utilice el
regex
parámetro en la función de filtro para obtener columnas donde los nombres de columna se evalúan como Verdadero en una expresión dada. - La selección de columnas según los tipos de datos puede resultar útil al realizar un análisis exploratorio de datos. Tendrá diferentes tipos de datos separados, lo que eliminará el proceso de crear manualmente la lista de columnas para diferentes tipos de datos.