Amikor megpróbálja értelmezni a nagy DataFrame-et a Pandasban, előfordulhat, hogy oszlopok és sorok szerint kell megadnia. Ebben az oktatóanyagban bemutatjuk a DataFrame oszlopparticionálásának legelterjedtebb használati eseteit.
Kezdjük a példa DataFrame beállításával, amit a következő Python kód futtatásával fogunk megtenni kedvenc környezetünkben (az egyszerűség kedvéért én Anacondát és Jupyter Lab-ot használok).
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)
Most nézzük meg a Dataframe első sorait a head() metódussal.
languages.head()
Amint láthatja, ez egy meglehetősen egyszerű DataFrame, amelyet példaként használunk ebben a bejegyzésben:
| |
nyelv |
átlagos_nehézségi_szint |
átlagos_fizetés |
alkalmazások |
| 0 |
Piton |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Egy oszlop szűrése
Kezdjük a legegyszerűbb esettel, amely az adatkészletünkből egy oszlop alkészlete. A következő parancs futtatásával létrejön egy Series objektum:
Név/címke szerint
languages["language"]
A kimenet egy sorozat:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Név: nyelv, dtype: objektum
type(languages["language"])
pandas.core.series.Series
Index szerint
A következő parancs az első oszlopot tartalmazó sorozatot is visszaadja
languages.iloc[:,0]
Több oszlop kiválasztása
Név szerint
Az oszlopok listájának átadásakor a Pandas az adatok egy részét tartalmazó DataFrame-et ad vissza.
languages[["language", "applications"]]
| |
nyelv |
alkalmazások |
| 0 |
Piton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Címke szerint (helyiséggel)
df.loc[:,["language","applications"]]
Az eredmény hasonló lesz.
Index szerint
Most keressünk le több oszlopot az index segítségével:
languages.iloc[: ,[0,3]]
| |
nyelv |
alkalmazások |
| 0 |
Piton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Feltétel szerint
Ebben az esetben csak azokat az oszlopokat jelenítjük meg, amelyek neve egyezik egy adott kifejezéssel. Használjuk a nagyon praktikus szűrési módszert:
languages.filter(axis = 1, like="avg")
Megjegyzések:
- adott reguláris kifejezéssel (regex) is szűrhetünk.
- Az axis=0 paramétert alkalmazhatjuk adott sorérték szerinti szűréshez.
Adott sorok szűrése feltétel szerint
Íme egy meglehetősen egyszerű módja a DataFrame részhalmazának egy sorérték szerint:
languages[(languages["applications"] > 15)]
Egyetlen eredményünk van:
languages[(languages["applications"] > 15)]
| |
nyelv |
átlagos_nehézségi_szint |
átlagos_fizetés |
alkalmazások |
| 3 |
PHP |
1 |
80 |
20 |