Filtruj pandy w wielu warunkach

Filtruj pandy w wielu warunkach

Najpopularniejsza manipulacja ramami danych w panwie jest filtrowania. W tym poście przyjrzymy się, jak użyć kilku warunków do filtrowania pandas DataFrame. W pandy istnieje wiele metod wyodrębnienia danych z DataFrame przy użyciu wielu warunków. W poniższych przykładach zademonstrujemy, jak korzystać z różnych funkcji do filtrowania ramki danych przy użyciu wielu warunków.

Metoda 1: Za pomocą eval ()

eval () służy do oceny wyrażenia. Więc będzie działał jako filtr w ramce danych i zwróci wiersze pasujące do warunku.

Składnia

Pandy.DataFrame_Object [DataFrame_Object.eval („Warunki”)]

Przykład 1

Utwórzmy ramkę danych z 6 kolumnami i 4 wierszami i zwróć wiersze na podstawie kolumny opłat, w której identyfikator jest większy niż 20, a nazwa kończy się „N”.

importować pandy
Importuj Numpy
Uwagi = pandy.DataFrame ([[23, „Sravan”, „Pass”, 1000,34,56],
[21, „Siva”, „Fail”, 400,32,45],
[20, „Sahaja”, „Pass”, 100 78,90],
[22, „Suryam”, „Fail”, 450,76,56]
], kolumny = [„id”, „name”, „status”, „Fee”, „Points1”, „Points2”])
Drukuj (uwagi)
wydrukować()
# Zwróć wiersze na podstawie kolumny opłat, w której identyfikator jest większy niż 20, a nazwa kończy się „n”.
Drukuj (uwagi [uwagi.eval („ID> 20 i nazwa.str.ENDSWITH („n”).wartości ”)])

Wyjście

ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56

Jest tylko jeden wiersz, taka, że ​​nazwa kończy się „n”, a identyfikator jest większy niż 20. Tutaj określiliśmy dwa warunki za pomocą operatora „i”.

Przykład 2

Zwróć rzędy na podstawie kolumny „Opłata”, w której identyfikator jest większy niż 20, a „Punkty 1” jest mniejsze niż 35, a nazwa zaczyna się od „s”.

importować pandy
Importuj Numpy
Uwagi = pandy.DataFrame ([[23, „Sravan”, „Pass”, 1000,34,56],
[21, „Siva”, „Fail”, 400,32,45],
[20, „Sahaja”, „Pass”, 100 78,90],
[22, „Suryam”, „Fail”, 450,76,56]
], kolumny = [„id”, „name”, „status”, „Fee”, „Points1”, „Points2”])
# Zwróć wiersze na podstawie kolumny opłat, w której identyfikator jest większy niż 20 i zaczyna się od „s” i punktów 1 mniej niż 35.
Drukuj (uwagi [uwagi.eval ("id> 20 i nazwa.str.startswith („s”).Wartości i punkty1 < 35")])

Wyjście

ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45

Dwa rzędy pasują do stanu.

Metoda 2: Korzystanie z LOC []

Składnia

DataFrame_Object.loc []

Parametr

Etykieta indeksu: Lista ciągów lub pojedynczy ciąg nazw indeksu wiersza.

Przykład 1

Utwórz ramkę danych o nazwie „Uwagi” z 6 kolumnami. Zwróćmy wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów mniej niż 76.

importować pandy
Uwagi = pandy.DataFrame ([[23, „Sravan”, „Pass”, 1000,34,56],
[21, „Siva”, „Fail”, 400,32,45],
[20, „Sahaja”, „Pass”, 100 78,90],
[22, „Suryam”, „Fail”, 450,76,56]
], kolumny = [„id”, „name”, „status”, „Fee”, „Points1”, „Points2”])
# Wyświetl ramkę danych - uwagi
Drukuj (uwagi)
wydrukować()
# Zwróć wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów 2 niż 76
Drukuj (uwagi.loc [(uwagi [„Fee”]> 300) i (uwagi [„Points2”] < 76)])

Wyjście

ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
2 20 Sahaja Pass 100 78 90
3 22 Suryam Fail 450 76 56
ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Istnieją 3 rzędy, w których opłata jest większa niż 300, a punkty 2 mniej niż 76. Tutaj określiliśmy dwa warunki z operatorem „&”.

Przykład 2:

Utwórz ramkę danych o nazwie „Uwagi” z 6 kolumnami. Zwróćmy wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów mniej niż 76.

importować pandy
Uwagi = pandy.DataFrame ([[23, „Sravan”, „Pass”, 1000,34,56],
[21, „Siva”, „Fail”, 400,32,45],
[20, „Sahaja”, „Pass”, 100 78,90],
[22, „Suryam”, „Fail”, 450,76,56]
], kolumny = [„id”, „name”, „status”, „Fee”, „Points1”, „Points2”])
# Zwróć wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów 2 niż 76, a status to „awaria”.
Drukuj (uwagi.loc [(uwagi [„Fee”]> 300) i (uwagi [„Points2”] < 76) & (remarks['status'] == 'fail')])

Wyjście

ID nazwa Status Opłata Punkty 1 punkty 2
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Istnieją 2 wiersze, w których opłata jest większa niż 300 i punktów większa niż 76, a status to „porażka”. Tutaj określiliśmy trzy warunki z operatorem „&”.

Metoda 3: Za pomocą zapytania ()

Query () przyjmie warunek jako wyrażenie, tak że rzędy są filtrowane w ramce danych na podstawie dostarczonego wyrażenia. Upewnij się, że musisz napisać wyrażenie w środku „”.

Składnia

Pandy.DataFrame_Object.Zapytanie („Wyrażenie”)

Przykład

Zwróćmy wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów mniej niż 76.

Importować pandy
Uwagi = pandy.DataFrame ([[23, „Sravan”, „Pass”, 1000,34,56],
[21, „Siva”, „Fail”, 400,32,45],
[20, „Sahaja”, „Pass”, 100 78,90],
[22, „Suryam”, „Fail”, 450,76,56]
], kolumny = [„id”, „name”, „status”, „Fee”, „Points1”, „Points2”])
# Zwróć wiersze na podstawie kolumny opłat, w której opłata jest większa niż 300 i punktów 2 niż 76
Drukuj (uwagi.zapytanie („Opłata> 300 i punkty2 < 76"))

Wyjście

ID nazwa Status Opłata Punkty 1 punkty 2
0 23 Sravan Pass 1000 34 56
1 21 Siva Fail 400 32 45
3 22 Suryam Fail 450 76 56

Istnieją 3 rzędy, w których opłata jest większa niż 300, a punkty 2 mniej niż 76. Tutaj określiliśmy dwa warunki za pomocą operatora „i”.

Wniosek

Filtrowanie jest najczęściej używaną operacją DataFrame w pandy. W tym przewodniku obradowaliśmy sposób filtrowania DataFrame za pomocą wielu warunków. Po pokryciu tego artykułu możesz być w stanie filtrować dane, używając wielu warunków samodzielnie. W tym artykule wdrożyliśmy kilka przykładów, aby nauczyć, jak wyodrębniać dane z DataFrame za pomocą wielu warunków przy użyciu różnych funkcji w pandy i Numpy Like Loc [], Query () i eval ().