Odabir redaka DataFramea na temelju vrijednosti stupaca u Pythonu

Odabir redaka DataFramea na temelju vrijednosti stupaca u Pythonu
Python

Korištenje Panda za filtriranje podatkovnih okvira prema vrijednostima stupaca

Kada radite s podacima u Pythonu, biblioteka Pandas nudi moćne alate za manipulaciju i analizu podataka. Jedan uobičajeni zadatak je odabir redaka iz DataFramea na temelju vrijednosti u određenom stupcu. Ova je operacija slična SQL upitu: SELECT * FROM tablice WHERE column_name = some_value.

U ovom članku ćemo istražiti kako to postići u Pandas koristeći različite metode. Bilo da filtrirate prema jednoj vrijednosti ili više kriterija, Pandas pruža intuitivne i učinkovite načine za rukovanje takvim operacijama. Uronimo u detalje.

Naredba Opis
pd.DataFrame() Stvara DataFrame objekt iz rječnika ili drugih podatkovnih struktura.
df[condition] Filtrira retke DataFramea na temelju uvjeta, vraćajući samo one koji zadovoljavaju kriterije.
print() Ispisuje navedenu poruku ili DataFrame na konzolu.
df['column'] == value Stvara Booleov niz koji se koristi za filtriranje redaka u kojima stupac odgovara navedenoj vrijednosti.
df['column'] >df['column'] > value Stvara Booleov niz koji se koristi za filtriranje redaka u kojima su vrijednosti stupca veće od navedene vrijednosti.
# Comment Koristi se za dodavanje objašnjenja ili bilješki unutar koda, koje se ne izvode kao dio skripte.

Implementacija odabira reda DataFrame u Pandas

U ponuđenim skriptama ključni zadatak je filtriranje redaka iz DataFramea na temelju specifičnih vrijednosti stupaca, što je uobičajeni zahtjev u analizi podataka. Prva skripta počinje uvozom biblioteke Pandas s import pandas as pd. Ovo je bitno jer je Pandas moćna biblioteka za manipulaciju podacima u Pythonu. Zatim stvaramo ogledni DataFrame pomoću pd.DataFrame() s rječnikom koji sadrži podatke za imena, godine i gradove. Ova nam struktura omogućuje jednostavnu vizualizaciju i manipuliranje tabličnim podacima. Ključni dio skripte je mjesto gdje filtriramo retke pomoću df[df['city'] == 'New York']. Ova naredba odabire sve retke u kojima je vrijednost stupca grada 'New York'. Rezultat je pohranjen u varijabli ny_rows, koji se zatim ispisuje za prikaz filtriranog DataFramea.

Druga skripta slijedi sličnu strukturu, ali se fokusira na filtriranje redaka na temelju numeričkog uvjeta. Nakon uvoza Panda i stvaranja DataFramea sa stupcima proizvoda, cijene i količine, skripta koristi df[df['price'] > 150] za filtriranje redaka gdje je cijena veća od 150. Ova naredba proizvodi podskup izvornog DataFramea koji sadrži samo retke koji ispunjavaju navedeni uvjet. Rezultat je pohranjen u expensive_products i ispisan radi provjere. Obje skripte pokazuju snagu i jednostavnost Panda za manipulaciju podacima. Korištenjem Booleovog indeksiranja, metode u kojoj prosljeđujemo niz istinitih/netočnih vrijednosti za filtriranje podataka, možemo učinkovito odabrati podskupove podataka na temelju različitih uvjeta, što ga čini neprocjenjivim alatom za analitičare podataka i znanstvenike.

Filtriranje redaka u DataFrameu na temelju vrijednosti stupaca

Python - korištenje Panda za DataFrame operacije

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

Upit za retke DataFramea na temelju vrijednosti stupaca

Python - Napredno filtriranje s Pandas

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

Napredne tehnike za odabir redaka DataFrame

Uz osnovno filtriranje s Booleovim indeksiranjem, Pandas nudi naprednije tehnike za odabir redaka na temelju vrijednosti stupaca. Jedna takva metoda je query() koja vam omogućuje korištenje sintakse slične SQL-u za filtriranje redaka DataFrame. Na primjer, možete koristiti df.query('age > 25 and city == "New York"') za odabir redaka u kojima je dob veća od 25 godina, a grad je New York. Ova metoda može vaš kod učiniti čitljivijim, posebno za složene uvjete. Osim toga, Pandas pruža loc[] i iloc[] pristupnici za precizniji odabir redaka. The loc[] pristupnik se temelji na oznakama, što znači da možete filtrirati retke prema njihovim oznakama ili booleovom nizu. Nasuprot tome, iloc[] pristupnik se temelji na cjelobrojnom položaju, što vam omogućuje filtriranje redaka prema njihovim indeksnim pozicijama.

Još jedna moćna značajka u Pandasu je mogućnost filtriranja DataFrame redaka pomoću isin() metoda. Ova je metoda korisna kada trebate filtrirati retke na temelju popisa vrijednosti. Na primjer, df[df['city'].isin(['New York', 'Los Angeles'])] odabire retke u kojima je vrijednost stupca grada New York ili Los Angeles. Nadalje, možete ulančati više uvjeta pomoću & i | operatore za stvaranje složenijih filtara. Na primjer, df[(df['age'] > 25) & (df['city'] == 'New York')] filtrira retke u kojima je dob veća od 25 godina, a grad je New York. Ove napredne tehnike pružaju robustan okvir za filtriranje podataka, čineći Pandu svestranim alatom za analizu podataka i manipulaciju.

Uobičajena pitanja o odabiru redaka DataFrame u Pandas

  1. Kako mogu filtrirati retke u DataFrameu na temelju više vrijednosti stupaca?
  2. Možete koristiti Booleovo indeksiranje s višestrukim uvjetima u kombinaciji koristeći & i |. Na primjer: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Koja je razlika između loc[] i iloc[]?
  4. loc[] temelji se na oznakama, dok iloc[] temelji se na cjelobrojnom položaju. Koristiti loc[] za filtriranje po oznakama i iloc[] za filtriranje prema pozicijama indeksa.
  5. Kako mogu koristiti query() funkciju za filtriranje redaka DataFrame?
  6. The query() omogućuje vam korištenje sintakse slične SQL-u. Na primjer: df.query('age > 25 and city == "New York"').
  7. Mogu li filtrirati retke na temelju popisa vrijednosti?
  8. Da, možete koristiti isin() metoda. Na primjer: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Koji je najbolji način za filtriranje redaka na temelju podudaranja nizova?
  10. Možete koristiti str.contains() metoda. Na primjer: df[df['city'].str.contains('New')].
  11. Kako mogu odabrati retke u kojima nedostaju vrijednosti stupaca?
  12. Možete koristiti isna() metoda. Na primjer: df[df['age'].isna()].
  13. Kako mogu filtrirati retke pomoću prilagođene funkcije?
  14. Možete koristiti apply() metoda s lambda funkcijom. Na primjer: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Mogu li filtrirati retke na temelju vrijednosti indeksa?
  16. Da, možete koristiti index.isin() metoda. Na primjer: df[df.index.isin([1, 3, 5])].

Ključni zaključci za odabir reda DataFrame

Odabir redaka iz DataFramea na temelju vrijednosti stupaca temeljna je vještina u analizi podataka s Pandasom. Koristeći Booleovo indeksiranje, loc[], iloc[], query(), i isin() omogućuje učinkovito filtriranje podataka. Ovladavanje ovim tehnikama poboljšava vašu sposobnost učinkovite manipulacije i analize skupova podataka.