Velge DataFrame-rader basert på kolonneverdier i Python

Velge DataFrame-rader basert på kolonneverdier i Python
Python

Bruke pandaer til å filtrere datarammer etter kolonneverdier

Når du arbeider med data i Python, tilbyr Pandas-biblioteket kraftige verktøy for datamanipulering og -analyse. En vanlig oppgave er å velge rader fra en DataFrame basert på verdiene i en bestemt kolonne. Denne operasjonen er beslektet med SQL-spørringen: SELECT * FROM table WHERE column_name = some_value.

I denne artikkelen vil vi utforske hvordan du oppnår dette i Pandas ved hjelp av ulike metoder. Enten du filtrerer etter en enkelt verdi eller flere kriterier, tilbyr Pandas intuitive og effektive måter å håndtere slike operasjoner på. La oss dykke ned i detaljene.

Kommando Beskrivelse
pd.DataFrame() Oppretter et DataFrame-objekt fra en ordbok eller andre datastrukturer.
df[condition] Filtrerer DataFrame-radene basert på en betingelse, og returnerer bare de som oppfyller kriteriene.
print() Sender ut den angitte meldingen eller DataFrame til konsollen.
df['column'] == value Oppretter en boolsk serie som brukes til å filtrere rader der kolonnen samsvarer med den angitte verdien.
df['column'] >df['column'] > value Oppretter en boolsk serie som brukes til å filtrere rader der kolonneverdiene er større enn den angitte verdien.
# Comment Brukes til å legge til forklaringer eller notater i koden, som ikke kjøres som en del av skriptet.

Implementering av DataFrame Row Selection i Pandas

I de oppgitte skriptene er nøkkeloppgaven å filtrere rader fra en DataFrame basert på spesifikke kolonneverdier, et vanlig krav i dataanalyse. Det første skriptet begynner med å importere Pandas-biblioteket med import pandas as pd. Dette er viktig siden Pandas er et kraftig datamanipulasjonsbibliotek i Python. Deretter lager vi et eksempel på DataFrame ved hjelp av pd.DataFrame() med en ordbok som inneholder data for navn, alder og byer. Denne strukturen lar oss enkelt visualisere og manipulere tabelldata. Den avgjørende delen av skriptet er hvor vi filtrerer rader ved hjelp av df[df['city'] == 'New York']. Denne kommandoen velger alle rader der bykolonnens verdi er 'New York'. Resultatet lagres i variabelen ny_rows, som deretter skrives ut for å vise den filtrerte DataFrame.

Det andre skriptet følger en lignende struktur, men fokuserer på å filtrere rader basert på en numerisk tilstand. Etter å ha importert Pandaer og opprettet en DataFrame med produkt-, pris- og mengdekolonner, bruker skriptet df[df['price'] > 150] for å filtrere rader der prisen er høyere enn 150. Denne kommandoen produserer et delsett av den originale DataFrame som bare inneholder radene som oppfyller den angitte betingelsen. Resultatet lagres i expensive_products og skrives ut for verifisering. Begge skriptene demonstrerer kraften og enkelheten til Pandas for datamanipulering. Ved å bruke boolsk indeksering, en metode der vi sender en serie sanne/falske verdier for å filtrere data, kan vi effektivt velge delsett av data basert på ulike forhold, noe som gjør det til et uvurderlig verktøy for dataanalytikere og forskere.

Filtrering av rader i en dataramme basert på kolonneverdier

Python - Bruke Pandas for DataFrame-operasjoner

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

Spørre DataFrame-rader basert på kolonneverdier

Python - Avansert filtrering med pandaer

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

Avanserte teknikker for å velge DataFrame-rader

I tillegg til grunnleggende filtrering med boolsk indeksering, tilbyr Pandas mer avanserte teknikker for å velge rader basert på kolonneverdier. En slik metode er query() funksjon, som lar deg bruke SQL-lignende syntaks til å filtrere DataFrame-rader. Du kan for eksempel bruke df.query('age > 25 and city == "New York"') for å velge rader der alderen er større enn 25 og byen er New York. Denne metoden kan gjøre koden din mer lesbar, spesielt for komplekse forhold. I tillegg tilbyr Pandas loc[] og iloc[] tilbehør for mer presist radvalg. De loc[] accessor er etikettbasert, noe som betyr at du kan filtrere rader etter deres etiketter eller en boolsk matrise. I motsetning til dette iloc[] accessor er heltallsposisjonsbasert, slik at du kan filtrere rader etter deres indeksposisjoner.

En annen kraftig funksjon i Pandas er muligheten til å filtrere DataFrame-rader ved å bruke isin() metode. Denne metoden er nyttig når du trenger å filtrere rader basert på en liste med verdier. For eksempel, 1. 3 velger rader der byens kolonneverdi er enten New York eller Los Angeles. Videre kan du lenke flere forhold ved å bruke & og | operatører for å lage mer komplekse filtre. For eksempel, df[(df['age'] > 25) & (df['city'] == 'New York')] filtrerer rader der alderen er over 25 og byen er New York. Disse avanserte teknikkene gir et robust rammeverk for datafiltrering, noe som gjør Pandas til et allsidig verktøy for dataanalyse og manipulering.

Vanlige spørsmål om valg av DataFrame-rader i pandaer

  1. Hvordan filtrerer jeg rader i en DataFrame basert på flere kolonneverdier?
  2. Du kan bruke boolsk indeksering med flere betingelser kombinert med & og |. For eksempel: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Hva er forskjellen mellom loc[] og iloc[]?
  4. loc[] er etikettbasert, mens iloc[] er heltallsposisjonsbasert. Bruk loc[] for filtrering etter etiketter og iloc[] for filtrering etter indeksposisjoner.
  5. Hvordan kan jeg bruke query() funksjon for å filtrere DataFrame-rader?
  6. De query() funksjon lar deg bruke SQL-lignende syntaks. For eksempel: df.query('age > 25 and city == "New York"').
  7. Kan jeg filtrere rader basert på en liste med verdier?
  8. Ja, du kan bruke isin() metode. For eksempel: 1. 3.
  9. Hva er den beste måten å filtrere rader basert på strengmatching?
  10. Du kan bruke str.contains() metode. For eksempel: df[df['city'].str.contains('New')].
  11. Hvordan velger jeg rader der kolonneverdier mangler?
  12. Du kan bruke isna() metode. For eksempel: df[df['age'].isna()].
  13. Hvordan kan jeg filtrere rader ved å bruke en egendefinert funksjon?
  14. Du kan bruke apply() metode med lambdafunksjon. For eksempel: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Kan jeg filtrere rader basert på indeksverdier?
  16. Ja, du kan bruke index.isin() metode. For eksempel: df[df.index.isin([1, 3, 5])].

Viktige ting for valg av DataFrame-rader

Å velge rader fra en DataFrame basert på kolonneverdier er en grunnleggende ferdighet i dataanalyse med Pandas. Ved å bruke boolsk indeksering, loc[], iloc[], query(), og isin() metoder gir effektiv datafiltrering. Å mestre disse teknikkene forbedrer din evne til å manipulere og analysere datasett effektivt.