Gdy próbujesz zrozumieć dużą ramkę DataFrame w Pandas, możesz potrzebować podzbiorów według kolumn i wierszy. W tym samouczku pokażemy najbardziej rozpowszechnione przypadki użycia partycjonowania kolumn w DataFrame.
Zaczniemy od skonfigurowania naszego przykładowego DataFrame, co zrobimy, uruchamiając następujący kod Pythona w naszym ulubionym środowisku (dla uproszczenia używam Anacondy i 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)
Przyjrzyjmy się teraz naszym pierwszym wierszom Dataframe za pomocą metody head().
languages.head()
Jak widać, jest to dość prosta ramka DataFrame, której użyjemy jako przykładu w tym poście:
| |
język |
avg_difficulty_level |
średnia_wynagrodzenie |
Aplikacje |
| 0 |
Pyton |
3 |
120 |
10 |
| 1 |
C-Sharp |
2 |
100 |
15 |
| 2 |
JavaScript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrowanie pojedynczej kolumny
Zaczniemy od najprostszego przypadku, który polega na podzbiorze jednej kolumny z naszego zbioru danych. Uruchomienie następującego polecenia spowoduje utworzenie obiektu serii:
Według nazwy / etykiety
languages["language"]
Wynikiem jest seria:
0 Pythona
1 C-ostry
2 Javascript
3 PHP
Nazwa: język, dtype: obiekt
type(languages["language"])
pandas.core.series.seria
Według indeksu
Następujące polecenie zwróci również serię zawierającą pierwszą kolumnę
languages.iloc[:,0]
Zaznaczanie wielu kolumn
Wg nazwy
Podczas przekazywania listy kolumn Pandy zwrócą ramkę DataFrame zawierającą część danych.
languages[["language", "applications"]]
| |
język |
Aplikacje |
| 0 |
Pyton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
JavaScript |
14 |
| 3 |
PHP |
20 |
Według etykiety (z loc)
df.loc[:,["language","applications"]]
Wynik będzie podobny.
Według indeksu
Teraz pobierzmy wiele kolumn za pomocą indeksu:
languages.iloc[: ,[0,3]]
| |
język |
Aplikacje |
| 0 |
Pyton |
10 |
| 1 |
C-Sharp |
15 |
| 2 |
JavaScript |
14 |
| 3 |
PHP |
20 |
Według warunku
W tym przypadku pokażemy tylko kolumny, których nazwa odpowiada określonemu wyrażeniu. Użyjemy całkiem przydatnej metody filtrowania :
languages.filter(axis = 1, like="avg")
Uwagi:
- możemy również filtrować według określonego wyrażenia regularnego (regex).
- Możemy zastosować parametr axis=0 do filtrowania według określonej wartości wiersza.
Filtruj określone wiersze według stanu
Oto całkiem prosty sposób na podzbiór DataFrame zgodnie z wartością wiersza:
languages[(languages["applications"] > 15)]
Mamy tylko jeden wynik:
languages[(languages["applications"] > 15)]
| |
język |
avg_difficulty_level |
średnia_wynagrodzenie |
Aplikacje |
| 3 |
PHP |
1 |
80 |
20 |