Valg af DataFrame-rækker baseret på kolonneværdier i Python

Valg af DataFrame-rækker baseret på kolonneværdier i Python
Python

Brug af pandaer til at filtrere datarammer efter kolonneværdier

Når du arbejder med data i Python, tilbyder Pandas-biblioteket kraftfulde værktøjer til datamanipulation og -analyse. En almindelig opgave er at vælge rækker fra en DataFrame baseret på værdierne i en specifik kolonne. Denne handling er beslægtet med SQL-forespørgslen: SELECT * FROM table WHERE column_name = some_value.

I denne artikel vil vi undersøge, hvordan man opnår dette i Pandas ved hjælp af forskellige metoder. Uanset om du filtrerer efter en enkelt værdi eller flere kriterier, tilbyder Pandas intuitive og effektive måder at håndtere sådanne operationer på. Lad os dykke ned i detaljerne.

Kommando Beskrivelse
pd.DataFrame() Opretter et DataFrame-objekt fra en ordbog eller andre datastrukturer.
df[condition] Filtrerer DataFrame-rækkerne baseret på en betingelse og returnerer kun dem, der opfylder kriterierne.
print() Udsender den angivne besked eller DataFrame til konsollen.
df['column'] == value Opretter en boolesk serie, der bruges til at filtrere rækker, hvor kolonnen matcher den angivne værdi.
df['column'] >df['column'] > value Opretter en boolesk serie, der bruges til at filtrere rækker, hvor kolonneværdierne er større end den angivne værdi.
# Comment Bruges til at tilføje forklaringer eller noter i koden, som ikke udføres som en del af scriptet.

Implementering af DataFrame Row Selection i Pandas

I de medfølgende scripts er nøgleopgaven at filtrere rækker fra en DataFrame baseret på specifikke kolonneværdier, et almindeligt krav i dataanalyse. Det første script begynder med at importere Pandas-biblioteket med import pandas as pd. Dette er vigtigt, da Pandas er et kraftfuldt datamanipulationsbibliotek i Python. Dernæst opretter vi et eksempel på DataFrame ved hjælp af pd.DataFrame() med en ordbog, der indeholder data for navne, aldre og byer. Denne struktur giver os mulighed for nemt at visualisere og manipulere tabeldata. Den afgørende del af scriptet er, hvor vi filtrerer rækker vha df[df['city'] == 'New York']. Denne kommando vælger alle rækker, hvor bykolonnens værdi er 'New York'. Resultatet gemmes i variablen ny_rows, som derefter udskrives for at vise den filtrerede DataFrame.

Det andet script følger en lignende struktur, men fokuserer på at filtrere rækker baseret på en numerisk betingelse. Efter at have importeret Pandaer og oprettet en DataFrame med produkt-, pris- og mængdekolonner, bruger scriptet df[df['price'] > 150] for at filtrere rækker, hvor prisen er større end 150. Denne kommando producerer et undersæt af den originale DataFrame, der kun indeholder de rækker, der opfylder den angivne betingelse. Resultatet gemmes i expensive_products og udskrives til verifikation. Begge scripts demonstrerer kraften og enkelheden ved Pandas til datamanipulation. Ved at bruge boolesk indeksering, en metode, hvor vi sender en række sande/falske værdier til at filtrere data, kan vi effektivt udvælge delmængder af data baseret på forskellige forhold, hvilket gør det til et uvurderligt værktøj for dataanalytikere og videnskabsmænd.

Filtrering af rækker i en dataramme baseret på kolonneværdier

Python - Brug af Pandas til DataFrame-operationer

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

Forespørgsel i DataFrame-rækker baseret på kolonneværdier

Python - Avanceret 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

Avancerede teknikker til at vælge DataFrame-rækker

Ud over grundlæggende filtrering med boolesk indeksering tilbyder Pandas mere avancerede teknikker til at vælge rækker baseret på kolonneværdier. En sådan metode er query() funktion, som giver dig mulighed for at bruge SQL-lignende syntaks til at filtrere DataFrame-rækker. Du kan f.eks. bruge df.query('age > 25 and city == "New York"') for at vælge rækker, hvor alderen er større end 25, og byen er New York. Denne metode kan gøre din kode mere læsbar, især for komplekse forhold. Derudover leverer Pandas loc[] og iloc[] tilbehør til mere præcist rækkevalg. Det loc[] accessor er etiketbaseret, hvilket betyder, at du kan filtrere rækker efter deres etiketter eller et boolesk array. I modsætning hertil iloc[] accessor er heltalspositionsbaseret, hvilket giver dig mulighed for at filtrere rækker efter deres indekspositioner.

En anden kraftfuld funktion i Pandas er evnen til at filtrere DataFrame-rækker ved hjælp af isin() metode. Denne metode er nyttig, når du skal filtrere rækker baseret på en liste med værdier. For eksempel, df[df['city'].isin(['New York', 'Los Angeles'])] vælger rækker, hvor bykolonnens værdi er enten New York eller Los Angeles. Desuden kan du kæde flere forhold ved hjælp af & og | operatører til at skabe mere komplekse filtre. For eksempel, df[(df['age'] > 25) & (df['city'] == 'New York')] filtrerer rækker, hvor alderen er over 25, og byen er New York. Disse avancerede teknikker giver en robust ramme for datafiltrering, hvilket gør Pandas til et alsidigt værktøj til dataanalyse og manipulation.

Almindelige spørgsmål om valg af DataFrame-rækker i pandaer

  1. Hvordan filtrerer jeg rækker i en DataFrame baseret på flere kolonneværdier?
  2. Du kan bruge boolsk indeksering med flere betingelser kombineret vha & og |. For eksempel: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Hvad er forskellen mellem loc[] og iloc[]?
  4. loc[] er etiketbaseret, mens iloc[] er heltalspositionsbaseret. Brug loc[] til filtrering efter etiketter og iloc[] til filtrering efter indekspositioner.
  5. Hvordan kan jeg bruge query() funktion til at filtrere DataFrame rækker?
  6. Det query() funktionen giver dig mulighed for at bruge SQL-lignende syntaks. For eksempel: df.query('age > 25 and city == "New York"').
  7. Kan jeg filtrere rækker ud fra en liste over værdier?
  8. Ja, du kan bruge isin() metode. For eksempel: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Hvad er den bedste måde at filtrere rækker på baseret på strengmatchning?
  10. Du kan bruge str.contains() metode. For eksempel: df[df['city'].str.contains('New')].
  11. Hvordan vælger jeg rækker, hvor der mangler kolonneværdier?
  12. Du kan bruge isna() metode. For eksempel: df[df['age'].isna()].
  13. Hvordan kan jeg filtrere rækker ved hjælp af en brugerdefineret funktion?
  14. Du kan bruge apply() metode med en lambda-funktion. For eksempel: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Kan jeg filtrere rækker baseret på indeksværdier?
  16. Ja, du kan bruge index.isin() metode. For eksempel: df[df.index.isin([1, 3, 5])].

Nøglemuligheder til DataFrame Row Selection

At vælge rækker fra en DataFrame baseret på kolonneværdier er en grundlæggende færdighed i dataanalyse med Pandas. Brug af boolesk indeksering, loc[], iloc[], query(), og isin() metoder giver mulighed for effektiv datafiltrering. At mestre disse teknikker forbedrer din evne til at manipulere og analysere datasæt effektivt.