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
- Kako mogu filtrirati retke u DataFrameu na temelju više vrijednosti stupaca?
- Možete koristiti Booleovo indeksiranje s višestrukim uvjetima u kombinaciji koristeći & i |. Na primjer: df[(df['age'] > 25) & (df['city'] == 'New York')].
- Koja je razlika između loc[] i iloc[]?
- 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.
- Kako mogu koristiti query() funkciju za filtriranje redaka DataFrame?
- The query() omogućuje vam korištenje sintakse slične SQL-u. Na primjer: df.query('age > 25 and city == "New York"').
- Mogu li filtrirati retke na temelju popisa vrijednosti?
- Da, možete koristiti isin() metoda. Na primjer: df[df['city'].isin(['New York', 'Los Angeles'])].
- Koji je najbolji način za filtriranje redaka na temelju podudaranja nizova?
- Možete koristiti str.contains() metoda. Na primjer: df[df['city'].str.contains('New')].
- Kako mogu odabrati retke u kojima nedostaju vrijednosti stupaca?
- Možete koristiti isna() metoda. Na primjer: df[df['age'].isna()].
- Kako mogu filtrirati retke pomoću prilagođene funkcije?
- Možete koristiti apply() metoda s lambda funkcijom. Na primjer: df[df.apply(lambda row: row['age'] > 25, axis=1)].
- Mogu li filtrirati retke na temelju vrijednosti indeksa?
- 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.