Når du prøver å forstå en stor DataFrame i Pandas, må du kanskje underordne den etter kolonner og rader. I denne opplæringen viser vi de mest utbredte brukstilfellene for kolonnepartisjonering av DataFrame.
Vi starter med å sette opp vårt eksempel DataFrame, som vi vil gjøre ved å kjøre følgende Python-kode i favorittmiljøet vårt (for enkelhets skyld bruker 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)
La oss nå se på våre første rader i Dataframe ved å bruke head()-metoden.
languages.head()
Som du kan se, er dette en ganske enkel DataFrame vi vil bruke som eksempel i dette innlegget:
| |
Språk |
avg_difficulty_level |
avg_salary |
applikasjoner |
| 0 |
Python |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrering av en enkelt kolonne
Vi starter med det enkleste tilfellet, som er å dele én kolonne ut av datasettet vårt. Å kjøre følgende kommando vil opprette et serieobjekt:
Etter navn/etikett
languages["language"]
Utgangen er en serie:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Navn: språk, dtype: objekt
type(languages["language"])
pandas.core.series.Series
Etter indeks
Følgende kommando vil også returnere en serie som inneholder den første kolonnen
languages.iloc[:,0]
Velge flere kolonner
Ved navn
Når du sender en liste over kolonner, vil Pandas returnere en DataFrame som inneholder deler av dataene.
languages[["language", "applications"]]
| |
Språk |
applikasjoner |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Etter etikett (med loc)
df.loc[:,["language","applications"]]
Resultatet vil være likt.
Etter indeks
La oss nå hente flere kolonner ved å bruke indeksen:
languages.iloc[: ,[0,3]]
| |
Språk |
applikasjoner |
| 0 |
Python |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Etter tilstand
I dette tilfellet vil vi bare vise kolonnene hvilket navn samsvarer med et spesifikt uttrykk. Vi bruker den ganske hendige filtermetoden :
languages.filter(axis = 1, like="avg")
Merknader:
- vi kan også filtrere etter et spesifikt regulært uttrykk (regex).
- Vi kan bruke parameteren axis=0 for å filtrere etter spesifikk radverdi.
Filtrer spesifikke rader etter tilstand
Her er en ganske enkel måte å undersette DataFrame i henhold til en radverdi:
languages[(languages["applications"] > 15)]
Vi har bare ett resultat:
languages[(languages["applications"] > 15)]
| |
Språk |
avg_difficulty_level |
avg_salary |
applikasjoner |
| 3 |
PHP |
1 |
80 |
20 |