Když se snažíte porozumět velkému DataFrame v Pandas, možná jej budete muset podmnožit podle sloupců a řádků. V tomto tutoriálu si ukážeme nejčastější případy použití rozdělení sloupců ve vašem DataFrame.
Začneme nastavením našeho příkladu DataFrame, což provedeme spuštěním následujícího kódu Pythonu v našem oblíbeném prostředí (pro jednoduchost používám Anaconda a 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)
Nyní se podívejme na první řádky našeho Dataframe pomocí metody head().
languages.head()
Jak můžete vidět, toto je docela jednoduchý DataFrame, který použijeme jako příklad v tomto příspěvku:
|
Jazyk |
průměrná_úroveň_obtížnosti |
průměrný_plat |
aplikací |
0 |
Krajta |
3 |
120 |
10 |
1 |
C-Sharp |
2 |
100 |
15 |
2 |
Javascript |
2 |
120 |
14 |
3 |
PHP |
1 |
80 |
20 |
Filtrování jednoho sloupce
Začneme tím nejjednodušším případem, kterým je podmnožina jednoho sloupce z naší datové sady. Spuštěním následujícího příkazu se vytvoří objekt Series:
Podle jména / štítku
languages["language"]
Výstupem je řada:
0 Python
1 C-Sharp
2 Javascript
3 PHP
Jméno: jazyk, dtype: objekt
type(languages["language"])
Pandas.core.series.Series
Podle indexu
Následující příkaz také vrátí řadu obsahující první sloupec
languages.iloc[:,0]
Výběr více sloupců
Podle jména
Při předávání seznamu sloupců Pandas vrátí DataFrame obsahující část dat.
languages[["language", "applications"]]
|
Jazyk |
aplikací |
0 |
Krajta |
10 |
1 |
C-Sharp |
15 |
2 |
Javascript |
14 |
3 |
PHP |
20 |
Podle štítku (s místem)
df.loc[:,["language","applications"]]
Výsledek bude podobný.
Podle indexu
Nyní načteme více sloupců pomocí indexu:
languages.iloc[: ,[0,3]]
|
Jazyk |
aplikací |
0 |
Krajta |
10 |
1 |
C-Sharp |
15 |
2 |
Javascript |
14 |
3 |
PHP |
20 |
Podle podmínek
V tomto případě pouze ukážeme sloupce, jejichž název odpovídá konkrétnímu výrazu. Použijeme docela praktickou metodu filtrování :
languages.filter(axis = 1, like="avg")
Poznámky:
- můžeme také filtrovat podle konkrétního regulárního výrazu (regex).
- Můžeme použít parametr axis=0 pro filtrování podle konkrétní hodnoty řádku.
Filtrujte konkrétní řádky podle podmínky
Zde je docela jednoduchý způsob, jak podnastavit DataFrame podle hodnoty řádku:
languages[(languages["applications"] > 15)]
Máme jen jeden výsledek:
languages[(languages["applications"] > 15)]
|
Jazyk |
průměrná_úroveň_obtížnosti |
průměrný_plat |
aplikací |
3 |
PHP |
1 |
80 |
20 |