Cuando intente dar sentido a un DataFrame grande en Pandas, es posible que deba subdividirlo en columnas y filas. En este tutorial, mostraremos los casos de uso más frecuentes de la partición de columnas de su DataFrame.
Comenzaremos configurando nuestro DataFrame de ejemplo, lo que haremos ejecutando el siguiente código de Python en nuestro entorno favorito (para simplificar, uso Anaconda y Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Ahora, veamos las primeras filas de nuestro Dataframe usando el método head().
languages.head()
Como puede ver, este es un DataFrame bastante simple que usaremos como ejemplo en esta publicación:
|
idioma |
nivel_de_dificultad_promedio |
salario_promedio |
aplicaciones |
0 |
Pitón |
3 |
120 |
10 |
1 |
Do sostenido |
2 |
100 |
15 |
2 |
JavaScript |
2 |
120 |
14 |
3 |
PHP |
1 |
80 |
20 |
Filtrar una sola columna
Comenzaremos con el caso más simple, que consiste en crear un subconjunto de una columna de nuestro conjunto de datos. Ejecutar el siguiente comando creará un objeto Serie:
Por nombre / etiqueta
languages["language"]
La salida es una Serie:
0 pitón
1 Do sostenido
2 JavaScript
3 PHP
Nombre: idioma, dtype: objeto
type(languages["language"])
pandas.core.series.Series
Por índice
El siguiente comando también devolverá una serie que contiene la primera columna
languages.iloc[:,0]
Selección de varias columnas
Por nombre
Al pasar una lista de columnas, Pandas devolverá un DataFrame que contiene parte de los datos.
languages[["language", "applications"]]
|
idioma |
aplicaciones |
0 |
Pitón |
10 |
1 |
Do sostenido |
15 |
2 |
JavaScript |
14 |
3 |
PHP |
20 |
Por etiqueta (con loc)
df.loc[:,["language","applications"]]
El resultado será similar.
Por índice
Ahora recuperemos varias columnas usando el índice:
languages.iloc[: ,[0,3]]
|
idioma |
aplicaciones |
0 |
Pitón |
10 |
1 |
Do sostenido |
15 |
2 |
JavaScript |
14 |
3 |
PHP |
20 |
Por condición
En este caso, solo mostraremos las columnas cuyo nombre coincide con una expresión específica. Usaremos el método de filtro bastante útil:
languages.filter(axis = 1, like="avg")
Notas:
- también podemos filtrar por una expresión regular específica (regex).
- Podemos aplicar el parámetro axis=0 para filtrar por valor de fila específico.
Filtrar filas específicas por condición
Aquí hay una forma bastante sencilla de dividir el DataFrame en subconjuntos de acuerdo con un valor de fila:
languages[(languages["applications"] > 15)]
Solo tenemos un resultado:
languages[(languages["applications"] > 15)]
|
idioma |
nivel_de_dificultad_promedio |
salario_promedio |
aplicaciones |
3 |
PHP |
1 |
80 |
20 |