Når du prøver at forstå en stor DataFrame i Pandas, skal du muligvis undersætte den efter kolonner og rækker. I denne øvelse viser vi de mest udbredte anvendelsesmuligheder for kolonnepartitionering af din DataFrame.
Vi starter med at opsætte vores eksempel DataFrame, hvilket vi vil gøre ved at køre følgende Python-kode i vores foretrukne miljø (for nemheds skyld bruger jeg Anaconda og 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)
Lad os nu se på vores Dataframe første rækker ved hjælp af head() metoden.
languages.head()
Som du kan se, er dette en ret simpel DataFrame, vi vil bruge som eksempel i dette indlæg:
| |
Sprog |
avg_difficulty_level |
gennemsnitsløn |
applikationer |
| 0 |
Python |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrering af en enkelt kolonne
Vi starter med det enkleste tilfælde, som er at undersætte én kolonne ud af vores datasæt. Ved at køre følgende kommando oprettes et serieobjekt:
Efter navn / etiket
languages["language"]
Udgangen er en serie:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Navn: sprog, dtype: objekt
type(languages["language"])
pandaer.kerneserier.serier
Efter indeks
Den følgende kommando vil også returnere en serie, der indeholder den første kolonne
languages.iloc[:,0]
Valg af flere kolonner
Ved navn
Når Pandas sender en liste over kolonner, returnerer en DataFrame, der indeholder en del af dataene.
languages[["language", "applications"]]
| |
Sprog |
applikationer |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Efter etiket (med loc)
df.loc[:,["language","applications"]]
Resultatet vil være det samme.
Efter indeks
Lad os nu hente flere kolonner ved at bruge indekset:
languages.iloc[: ,[0,3]]
| |
Sprog |
applikationer |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Efter betingelse
I dette tilfælde viser vi blot kolonnerne, hvilket navn matcher et specifikt udtryk. Vi bruger den ganske praktiske filtermetode :
languages.filter(axis = 1, like="avg")
Bemærkninger:
- vi kan også filtrere efter et specifikt regulært udtryk (regex).
- Vi kan anvende parameteren axis=0 til at filtrere efter specifik rækkeværdi.
Filtrer specifikke rækker efter tilstand
Her er en ret ligetil måde at undersætte DataFrame i henhold til en rækkeværdi:
languages[(languages["applications"] > 15)]
Vi har kun ét resultat:
languages[(languages["applications"] > 15)]
| |
Sprog |
avg_difficulty_level |
gennemsnitsløn |
applikationer |
| 3 |
PHP |
1 |
80 |
20 |