Selectarea rândurilor DataFrame pe baza valorilor coloanelor în Python

Selectarea rândurilor DataFrame pe baza valorilor coloanelor în Python
Python

Utilizarea Pandas pentru a filtra DataFrames după valorile coloanelor

Când lucrați cu date în Python, biblioteca Pandas oferă instrumente puternice pentru manipularea și analiza datelor. O sarcină comună este selectarea rândurilor dintr-un DataFrame pe baza valorilor dintr-o anumită coloană. Această operație este asemănătoare cu interogarea SQL: SELECT * FROM tabelul WHERE nume_coloană = o anumită valoare.

În acest articol, vom explora cum să obținem acest lucru în Pandas folosind diferite metode. Indiferent dacă filtrați după o singură valoare sau după mai multe criterii, Pandas oferă modalități intuitive și eficiente de a gestiona astfel de operațiuni. Să ne afundăm în detalii.

Comanda Descriere
pd.DataFrame() Creează un obiect DataFrame dintr-un dicționar sau din alte structuri de date.
df[condition] Filtrează rândurile DataFrame în funcție de o condiție, returnând numai cele care îndeplinesc criteriile.
print() Emite mesajul specificat sau DataFrame la consolă.
df['column'] == value Creează o serie booleană folosită pentru a filtra rândurile în care coloana se potrivește cu valoarea specificată.
df['column'] >df['column'] > value Creează o serie booleană utilizată pentru a filtra rândurile în care valorile coloanei sunt mai mari decât valoarea specificată.
# Comment Folosit pentru a adăuga explicații sau note în cod, care nu sunt executate ca parte a scriptului.

Implementarea selecției rândurilor DataFrame în Pandas

În scripturile furnizate, sarcina cheie este de a filtra rândurile dintr-un DataFrame pe baza unor valori specifice de coloană, o cerință comună în analiza datelor. Primul script începe prin importul bibliotecii Pandas cu import pandas as pd. Acest lucru este esențial deoarece Pandas este o bibliotecă puternică de manipulare a datelor în Python. Apoi, creăm un exemplu de DataFrame folosind pd.DataFrame() cu un dicționar care conține date pentru nume, vârste și orașe. Această structură ne permite să vizualizăm și să manipulăm cu ușurință datele tabulare. Partea crucială a scriptului este aceea în care filtrem rândurile folosind df[df['city'] == 'New York']. Această comandă selectează toate rândurile în care valoarea coloanei orașului este „New York”. Rezultatul este stocat în variabilă ny_rows, care este apoi tipărit pentru a afișa DataFrame filtrat.

Al doilea script urmează o structură similară, dar se concentrează pe filtrarea rândurilor pe baza unei condiții numerice. După importarea Pandas și crearea unui DataFrame cu coloane produs, preț și cantitate, scriptul folosește df[df['price'] > 150] pentru a filtra rândurile în care prețul este mai mare de 150. Această comandă produce un subset al DataFrame-ului original care conține doar rândurile care îndeplinesc condiția specificată. Rezultatul este stocat în expensive_products și tipărit pentru verificare. Ambele scripturi demonstrează puterea și simplitatea Pandas pentru manipularea datelor. Folosind indexarea booleană, o metodă prin care trecem o serie de valori adevărate/false pentru a filtra datele, putem selecta eficient subseturi de date pe baza diferitelor condiții, făcându-l un instrument de neprețuit pentru analiștii de date și oamenii de știință.

Filtrarea rândurilor într-un cadru de date pe baza valorilor coloanelor

Python - Utilizarea Pandas pentru operațiunile DataFrame

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

Interogarea rândurilor DataFrame pe baza valorilor coloanelor

Python - Filtrare avansată cu 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

Tehnici avansate pentru selectarea rândurilor DataFrame

Pe lângă filtrarea de bază cu indexare booleană, Pandas oferă tehnici mai avansate de selectare a rândurilor pe baza valorilor coloanelor. O astfel de metodă este query() funcția, care vă permite să utilizați sintaxă asemănătoare SQL pentru a filtra rândurile DataFrame. De exemplu, puteți utiliza df.query('age > 25 and city == "New York"') pentru a selecta rânduri în care vârsta este mai mare de 25 de ani și orașul este New York. Această metodă vă poate face codul mai lizibil, mai ales în condiții complexe. În plus, Pandas oferă loc[] și iloc[] accesorii pentru o selecție mai precisă a rândurilor. The loc[] Accesorul se bazează pe etichete, ceea ce înseamnă că puteți filtra rândurile după etichetele lor sau după o matrice booleană. În contrast, cel iloc[] Accesorul se bazează pe poziții întregi, permițându-vă să filtrați rândurile după pozițiile lor de index.

O altă caracteristică puternică a Pandas este capacitatea de a filtra rândurile DataFrame folosind isin() metodă. Această metodă este utilă atunci când trebuie să filtrați rândurile pe baza unei liste de valori. De exemplu, df[df['city'].isin(['New York', 'Los Angeles'])] selectează rândurile în care valoarea coloanei orașului este fie New York, fie Los Angeles. În plus, puteți înlănțui mai multe condiții folosind & și | operatori pentru a crea filtre mai complexe. De exemplu, df[(df['age'] > 25) & (df['city'] == 'New York')] filtrează rândurile în care vârsta este mai mare de 25 de ani și orașul este New York. Aceste tehnici avansate oferă un cadru robust pentru filtrarea datelor, făcând Pandas un instrument versatil pentru analiza și manipularea datelor.

Întrebări frecvente despre selectarea rândurilor DataFrame în Pandas

  1. Cum filtrez rândurile dintr-un DataFrame pe baza mai multor valori de coloană?
  2. Puteți utiliza indexarea booleană cu mai multe condiții combinate folosind & și |. De exemplu: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Care e diferenta dintre loc[] și iloc[]?
  4. loc[] se bazează pe etichete, în timp ce iloc[] este bazat pe poziție întreg. Utilizare loc[] pentru filtrarea după etichete și iloc[] pentru filtrarea după pozițiile de index.
  5. Cum pot folosi query() funcția de filtrare a rândurilor DataFrame?
  6. The query() funcția vă permite să utilizați sintaxa asemănătoare SQL. De exemplu: df.query('age > 25 and city == "New York"').
  7. Pot filtra rândurile pe baza unei liste de valori?
  8. Da, puteți folosi isin() metodă. De exemplu: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Care este cel mai bun mod de a filtra rândurile pe baza potrivirii șirurilor?
  10. Puteți folosi str.contains() metodă. De exemplu: df[df['city'].str.contains('New')].
  11. Cum selectez rândurile în care lipsesc valorile coloanelor?
  12. Puteți folosi isna() metodă. De exemplu: df[df['age'].isna()].
  13. Cum pot filtra rândurile folosind o funcție personalizată?
  14. Puteți folosi apply() metoda cu o funcție lambda. De exemplu: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Pot filtra rândurile pe baza valorilor indexului?
  16. Da, puteți folosi index.isin() metodă. De exemplu: df[df.index.isin([1, 3, 5])].

Principalele concluzii pentru selectarea rândurilor DataFrame

Selectarea rândurilor dintr-un DataFrame pe baza valorilor coloanei este o abilitate fundamentală în analiza datelor cu Pandas. Folosind indexarea booleană, loc[], iloc[], query(), și isin() metodele permit filtrarea eficientă a datelor. Stăpânirea acestor tehnici vă îmbunătățește capacitatea de a manipula și analiza în mod eficient seturile de date.