Wybieranie wierszy DataFrame na podstawie wartości kolumn w Pythonie

Wybieranie wierszy DataFrame na podstawie wartości kolumn w Pythonie
Python

Używanie Pand do filtrowania ramek danych według wartości kolumn

Podczas pracy z danymi w Pythonie biblioteka Pandas oferuje potężne narzędzia do manipulacji i analizy danych. Jednym z typowych zadań jest wybieranie wierszy z ramki DataFrame na podstawie wartości w określonej kolumnie. Ta operacja jest podobna do zapytania SQL: SELECT * FROM table WHERE nazwa_kolumny = jakaś_wartość.

W tym artykule przyjrzymy się, jak osiągnąć ten cel w Pandach, stosując różne metody. Niezależnie od tego, czy filtrujesz według pojedynczej wartości, czy wielu kryteriów, Pandas zapewnia intuicyjne i skuteczne sposoby obsługi takich operacji. Zagłębmy się w szczegóły.

Komenda Opis
pd.DataFrame() Tworzy obiekt DataFrame na podstawie słownika lub innych struktur danych.
df[condition] Filtruje wiersze DataFrame na podstawie warunku, zwracając tylko te, które spełniają kryteria.
print() Wysyła określony komunikat lub ramkę danych do konsoli.
df['column'] == value Tworzy serię logiczną używaną do filtrowania wierszy, w których kolumna odpowiada określonej wartości.
df['column'] >df['column'] > value Tworzy serię logiczną używaną do filtrowania wierszy, w których wartości kolumn są większe niż określona wartość.
# Comment Służy do dodawania wyjaśnień lub notatek w kodzie, które nie są wykonywane jako część skryptu.

Implementowanie wyboru wierszy DataFrame w Pandach

W dostarczonych skryptach kluczowym zadaniem jest filtrowanie wierszy z ramki DataFrame na podstawie określonych wartości kolumn, co jest powszechnym wymaganiem w analizie danych. Pierwszy skrypt rozpoczyna się od zaimportowania biblioteki Pandas za pomocą import pandas as pd. Jest to istotne, ponieważ Pandas to potężna biblioteka do manipulacji danymi w Pythonie. Następnie tworzymy przykładową ramkę DataFrame za pomocą pd.DataFrame() ze słownikiem zawierającym dane o imionach, wieku i miastach. Taka struktura pozwala nam łatwo wizualizować i manipulować danymi tabelarycznymi. Kluczową częścią skryptu jest filtrowanie wierszy za pomocą df[df['city'] == 'New York']. To polecenie zaznacza wszystkie wiersze, w których wartość kolumny miasta to „Nowy Jork”. Wynik jest zapisywany w zmiennej ny_rows, który jest następnie drukowany w celu wyświetlenia przefiltrowanej ramki danych.

Drugi skrypt ma podobną strukturę, ale skupia się na filtrowaniu wierszy na podstawie warunku numerycznego. Po zaimportowaniu Pand i utworzeniu ramki DataFrame z kolumnami produktu, ceny i ilości, skrypt używa df[df['price'] > 150] do filtrowania wierszy, w których cena jest większa niż 150. To polecenie tworzy podzbiór oryginalnej ramki DataFrame zawierającej tylko wiersze spełniające określony warunek. Wynik jest zapisywany w expensive_products i wydrukowane w celu weryfikacji. Obydwa skrypty demonstrują możliwości i prostotę Pand w zakresie manipulacji danymi. Stosując indeksowanie boolowskie – metodę, w której przekazujemy serię wartości prawda/fałsz do filtrowania danych, możemy skutecznie wybierać podzbiory danych na podstawie różnych warunków, co czyni je nieocenionym narzędziem dla analityków danych i naukowców.

Filtrowanie wierszy w ramce danych na podstawie wartości kolumn

Python — używanie Pand do operacji na ramkach danych

import pandas as pd
# Create a sample DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
    'age': [24, 27, 22, 32, 29],
    'city': ['New York', 'Los Angeles', 'New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)

# Select rows where city is New York
ny_rows = df[df['city'] == 'New York']
print(ny_rows)

# Output:
#       name  age      city
# 0    Alice   24  New York
# 2  Charlie   22  New York

Wysyłanie zapytań do wierszy DataFrame na podstawie wartości kolumn

Python — zaawansowane filtrowanie za pomocą Pand

import pandas as pd

# Create a sample DataFrame
data = {
    'product': ['A', 'B', 'C', 'D'],
    'price': [100, 150, 200, 250],
    'quantity': [30, 50, 20, 40]
}
df = pd.DataFrame(data)

# Select rows where price is greater than 150
expensive_products = df[df['price'] > 150]
print(expensive_products)

# Output:
#   product  price  quantity
# 2       C    200        20
# 3       D    250        40

Zaawansowane techniki wybierania wierszy ramki danych

Oprócz podstawowego filtrowania za pomocą indeksowania logicznego, Pandas oferuje bardziej zaawansowane techniki wybierania wierszy na podstawie wartości kolumn. Jedną z takich metod jest query() funkcja, która pozwala na użycie składni podobnej do SQL do filtrowania wierszy DataFrame. Możesz na przykład użyć df.query('age > 25 and city == "New York"') aby wybrać wiersze, w których wiek jest większy niż 25 lat, a miastem jest Nowy Jork. Ta metoda może sprawić, że Twój kod będzie bardziej czytelny, szczególnie w przypadku złożonych warunków. Dodatkowo Pandas zapewnia loc[] I iloc[] akcesoria umożliwiające bardziej precyzyjny wybór wierszy. The loc[] Metoda dostępu jest oparta na etykietach, co oznacza, że ​​możesz filtrować wiersze według ich etykiet lub tablicy logicznej. Dla kontrastu, iloc[] Metoda dostępu jest oparta na pozycjach liczb całkowitych, co pozwala filtrować wiersze według ich pozycji indeksu.

Kolejną potężną funkcją Pand jest możliwość filtrowania wierszy DataFrame za pomocą isin() metoda. Ta metoda jest przydatna, gdy trzeba filtrować wiersze na podstawie listy wartości. Na przykład, df[df['city'].isin(['New York', 'Los Angeles'])] wybiera wiersze, w których wartość w kolumnie miasto to Nowy Jork lub Los Angeles. Co więcej, możesz łączyć wiele warunków za pomocą & I | operatorów do tworzenia bardziej złożonych filtrów. Na przykład, df[(df['age'] > 25) & (df['city'] == 'New York')] filtruje wiersze, w których wiek jest większy niż 25 lat, a miastem jest Nowy Jork. Te zaawansowane techniki zapewniają solidną platformę do filtrowania danych, dzięki czemu Pandy są wszechstronnym narzędziem do analizy i manipulacji danymi.

Często zadawane pytania dotyczące wybierania wierszy ramki danych w Pandach

  1. Jak filtrować wiersze w ramce danych na podstawie wartości wielu kolumn?
  2. Możesz użyć indeksowania logicznego z wieloma warunkami połączonymi za pomocą & I |. Na przykład: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Jaka jest różnica pomiędzy loc[] I iloc[]?
  4. loc[] opiera się na etykietach, podczas gdy iloc[] jest liczbą całkowitą, bazującą na pozycji. Używać loc[] do filtrowania według etykiet i iloc[] do filtrowania według pozycji indeksu.
  5. Jak mogę skorzystać z query() funkcja do filtrowania wierszy DataFrame?
  6. The query() Funkcja pozwala na użycie składni podobnej do SQL. Na przykład: df.query('age > 25 and city == "New York"').
  7. Czy mogę filtrować wiersze na podstawie listy wartości?
  8. Tak, możesz skorzystać z isin() metoda. Na przykład: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Jaki jest najlepszy sposób filtrowania wierszy na podstawie dopasowania ciągów?
  10. Możesz skorzystać z str.contains() metoda. Na przykład: df[df['city'].str.contains('New')].
  11. Jak wybrać wiersze, w których brakuje wartości kolumn?
  12. Możesz skorzystać z isna() metoda. Na przykład: df[df['age'].isna()].
  13. Jak mogę filtrować wiersze za pomocą funkcji niestandardowej?
  14. Możesz skorzystać z apply() metoda z funkcją lambda. Na przykład: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Czy mogę filtrować wiersze na podstawie wartości indeksu?
  16. Tak, możesz skorzystać z index.isin() metoda. Na przykład: df[df.index.isin([1, 3, 5])].

Kluczowe wnioski dotyczące wyboru wiersza ramki danych

Wybieranie wierszy z ramki DataFrame na podstawie wartości kolumn to podstawowa umiejętność analizy danych za pomocą Pand. Wykorzystując indeksowanie boolowskie, loc[], iloc[], query(), I isin() metody pozwalają na efektywne filtrowanie danych. Opanowanie tych technik zwiększa Twoją zdolność do skutecznego manipulowania i analizowania zbiorów danych.