Cando intentes dar sentido a un DataFrame grande en Pandas, pode que teñas que subdefinilo por columnas e filas. Neste tutorial mostraremos os casos de uso máis frecuentes de partición de columnas do teu DataFrame.
Comezaremos configurando o noso DataFrame de exemplo, o que faremos executando o seguinte código Python no noso entorno favorito (para simplificar, uso Anaconda e 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)
Agora, imos ver as nosas primeiras filas de Dataframe usando o método head().
languages.head()
Como podes ver, este é un DataFrame bastante sinxelo que usaremos como exemplo nesta publicación:
| |
lingua |
nivel_dificultade_medio |
medio_salario |
aplicacións |
| 0 |
Python |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrando unha única columna
Comezaremos polo caso máis sinxelo, que consiste en subconxugar unha columna do noso conxunto de datos. Ao executar o seguinte comando crearase un obxecto Series:
Por nome/etiqueta
languages["language"]
A saída é unha serie:
0 Python
1 Do sostenido
2 Javascript
3 PHP
Nome: idioma, dtype: obxecto
type(languages["language"])
pandas.core.series.Series
Por índice
O seguinte comando tamén devolverá unha serie que contén a primeira columna
languages.iloc[:,0]
Seleccionando varias columnas
Polo nome
Ao pasar unha lista de columnas, Pandas devolverá un DataFrame que contén parte dos datos.
languages[["language", "applications"]]
| |
lingua |
aplicacións |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Por etiqueta (con loc)
df.loc[:,["language","applications"]]
O resultado será semellante.
Por índice
Agora imos recuperar varias columnas usando o índice:
languages.iloc[: ,[0,3]]
| |
lingua |
aplicacións |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Por condición
Neste caso, só mostraremos as columnas cuxo nome coincide cunha expresión específica. Usaremos o método de filtro bastante práctico :
languages.filter(axis = 1, like="avg")
Notas:
- tamén podemos filtrar por unha expresión regular específica (regex).
- Podemos aplicar o parámetro axis=0 para filtrar por valor de fila específico.
Filtra filas específicas por condición
Aquí tes un xeito bastante sinxelo de subconfigurar o DataFrame segundo un valor de fila:
languages[(languages["applications"] > 15)]
Só temos un resultado:
languages[(languages["applications"] > 15)]
| |
lingua |
nivel_dificultade_medio |
medio_salario |
aplicacións |
| 3 |
PHP |
1 |
80 |
20 |