Quan intenteu donar sentit a un DataFrame gran a Pandas, potser haureu de subconfigurar-lo per columnes i files. En aquest tutorial mostrarem els casos d'ús més freqüents de la partició de columnes del vostre DataFrame.
Començarem configurant el nostre exemple de DataFrame, que farem executant el següent codi Python al nostre entorn preferit (per simplificar, faig servir Anaconda i 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)
Ara, mirem les nostres primeres files de Dataframe mitjançant el mètode head().
languages.head()
Com podeu veure, aquest és un DataFrame força senzill que utilitzarem com a exemple en aquesta publicació:
| |
llenguatge |
mig_nivell_dificultat |
mig_salari |
aplicacions |
| 0 |
Python |
3 |
120 |
10 |
| 1 |
Do sostingut |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrant una sola columna
Començarem amb el cas més senzill, que és subconjuntar una columna del nostre conjunt de dades. Si executeu l'ordre següent, es crearà un objecte Sèrie:
Per nom/etiqueta
languages["language"]
La sortida és una sèrie:
0 Python
1 Do sostingut
2 Javascript
3 PHP
Nom: idioma, dtype: objecte
type(languages["language"])
pandas.core.series.Series
Per índex
L'ordre següent també retornarà una sèrie que conté la primera columna
languages.iloc[:,0]
Seleccionant diverses columnes
Per nom
En passar una llista de columnes, Pandas retornarà un DataFrame que conté part de les dades.
languages[["language", "applications"]]
| |
llenguatge |
aplicacions |
| 0 |
Python |
10 |
| 1 |
Do sostingut |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Per etiqueta (amb loc)
df.loc[:,["language","applications"]]
El resultat serà similar.
Per índex
Ara recuperem diverses columnes utilitzant l'índex:
languages.iloc[: ,[0,3]]
| |
llenguatge |
aplicacions |
| 0 |
Python |
10 |
| 1 |
Do sostingut |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Per condició
En aquest cas, només mostrarem les columnes el nom que coincideix amb una expressió específica. Utilitzarem el mètode de filtre força útil :
languages.filter(axis = 1, like="avg")
Notes:
- també podem filtrar per una expressió regular específica (regex).
- Podem aplicar el paràmetre axis=0 per filtrar per valor de fila específic.
Filtreu files específiques per condició
Aquí hi ha una manera força senzilla de subconfigurar el DataFrame segons un valor de fila:
languages[(languages["applications"] > 15)]
Només tenim un resultat:
languages[(languages["applications"] > 15)]
| |
llenguatge |
mig_nivell_dificultat |
mig_salari |
aplicacions |
| 3 |
PHP |
1 |
80 |
20 |