Wanneer u een groot DataFrame in Panda's probeert te begrijpen, moet u het mogelijk onderverdelen in kolommen en rijen. In deze zelfstudie laten we de meest voorkomende gebruiksscenario's zien van kolompartitionering van uw DataFrame.
We beginnen met het opzetten van ons voorbeeld DataFrame, wat we zullen doen door de volgende Python-code uit te voeren in onze favoriete omgeving (voor de eenvoud gebruik ik Anaconda en 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)
Laten we nu eens kijken naar de eerste rijen van onze Dataframe met behulp van de methode head().
languages.head()
Zoals je kunt zien, is dit een vrij eenvoudig DataFrame dat we als voorbeeld in dit bericht zullen gebruiken:
| |
taal |
gemiddelde_moeilijkheidsgraad |
gemiddeld_salaris |
toepassingen |
| 0 |
Python |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Een enkele kolom filteren
We beginnen met het eenvoudigste geval, namelijk het subsetten van één kolom uit onze dataset. Als u de volgende opdracht uitvoert, wordt een Series-object gemaakt:
Op naam / label
languages["language"]
De output is een serie:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Naam: taal, dtype: object
type(languages["language"])
pandas.core.series.Series
op index
De volgende opdracht retourneert ook een serie die de eerste kolom bevat:
languages.iloc[:,0]
Meerdere kolommen selecteren
Bij naam
Bij het doorgeven van een lijst met kolommen, retourneert Panda's een DataFrame met een deel van de gegevens.
languages[["language", "applications"]]
| |
taal |
toepassingen |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Op label (met loc)
df.loc[:,["language","applications"]]
Het resultaat zal vergelijkbaar zijn.
op index
Laten we nu meerdere kolommen ophalen met behulp van de index:
languages.iloc[: ,[0,3]]
| |
taal |
toepassingen |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
op voorwaarde
In dit geval tonen we alleen de kolommen waarvan de naam overeenkomt met een specifieke uitdrukking. We gebruiken de best handige filtermethode :
languages.filter(axis = 1, like="avg")
Opmerkingen:
- we kunnen ook filteren op een specifieke reguliere expressie (regex).
- We kunnen de parameter axis=0 toepassen om te filteren op specifieke rijwaarde.
Specifieke rijen filteren op voorwaarde
Hier is een vrij eenvoudige manier om het DataFrame in te stellen op basis van een rijwaarde:
languages[(languages["applications"] > 15)]
We hebben maar één resultaat:
languages[(languages["applications"] > 15)]
| |
taal |
gemiddelde_moeilijkheidsgraad |
gemiddeld_salaris |
toepassingen |
| 3 |
PHP |
1 |
80 |
20 |