Când încercați să înțelegeți un DataFrame mare în Pandas, s-ar putea să fie necesar să îl substabiliți după coloane și rânduri. În acest tutorial, vom arăta cele mai răspândite cazuri de utilizare ale partiționării coloanelor DataFrame.
Vom începe prin a configura exemplul nostru de DataFrame, lucru pe care îl vom face rulând următorul cod Python în mediul nostru preferat (pentru simplitate, folosesc 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)
Acum, să ne uităm în primele rânduri ale Dataframe-ului folosind metoda head().
languages.head()
După cum puteți vedea, acesta este un DataFrame destul de simplu pe care îl vom folosi ca exemplu în această postare:
| |
limba |
avg_difficulty_level |
salariul_mediu |
aplicatii |
| 0 |
Piton |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrarea unei singure coloane
Vom începe cu cel mai simplu caz, care este să subsetăm o coloană din setul nostru de date. Rularea următoarei comenzi va crea un obiect Series:
După nume/etichetă
languages["language"]
Ieșirea este o serie:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Nume: limba, dtype: obiect
type(languages["language"])
panda.core.series.Series
După index
Următoarea comandă va returna și o serie care conține prima coloană
languages.iloc[:,0]
Selectarea mai multor coloane
Dupa nume
Când trece o listă de coloane, Pandas va returna un DataFrame care conține o parte din date.
languages[["language", "applications"]]
| |
limba |
aplicatii |
| 0 |
Piton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
După etichetă (cu loc)
df.loc[:,["language","applications"]]
Rezultatul va fi similar.
După index
Acum să recuperăm mai multe coloane utilizând indexul:
languages.iloc[: ,[0,3]]
| |
limba |
aplicatii |
| 0 |
Piton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
După condiție
În acest caz, vom afișa doar coloanele care nume se potrivește cu o anumită expresie. Vom folosi metoda de filtrare destul de utilă :
languages.filter(axis = 1, like="avg")
Note:
- putem filtra și după o anumită expresie regulată (regex).
- Putem aplica parametrul axa=0 pentru a filtra după o anumită valoare a rândului.
Filtrați anumite rânduri în funcție de condiție
Iată o modalitate destul de simplă de a subseta DataFrame în funcție de o valoare de rând:
languages[(languages["applications"] > 15)]
Avem un singur rezultat:
languages[(languages["applications"] > 15)]
| |
limba |
avg_difficulty_level |
salariul_mediu |
aplicatii |
| 3 |
PHP |
1 |
80 |
20 |