DataFrame-rijen selecteren op basis van kolomwaarden in Python

DataFrame-rijen selecteren op basis van kolomwaarden in Python
Python

Panda's gebruiken om DataFrames te filteren op kolomwaarden

Bij het werken met gegevens in Python biedt de Pandas-bibliotheek krachtige hulpmiddelen voor gegevensmanipulatie en -analyse. Een veel voorkomende taak is het selecteren van rijen uit een DataFrame op basis van de waarden in een specifieke kolom. Deze bewerking lijkt op de SQL-query: SELECT * FROM tabel WHERE kolomnaam = bepaalde_waarde.

In dit artikel zullen we onderzoeken hoe we dit in Panda's kunnen bereiken met behulp van verschillende methoden. Of u nu filtert op een enkele waarde of op meerdere criteria, Pandas biedt intuïtieve en efficiënte manieren om dergelijke bewerkingen af ​​te handelen. Laten we in de details duiken.

Commando Beschrijving
pd.DataFrame() Creëert een DataFrame-object op basis van een woordenboek of andere datastructuren.
df[condition] Filtert de DataFrame-rijen op basis van een voorwaarde en retourneert alleen de rijen die aan de criteria voldoen.
print() Voert het opgegeven bericht of DataFrame uit naar de console.
df['column'] == value Creëert een Booleaanse reeks die wordt gebruikt om rijen te filteren waarvan de kolom overeenkomt met de opgegeven waarde.
df['column'] >df['column'] > value Creëert een Booleaanse reeks die wordt gebruikt om rijen te filteren waarvan de kolomwaarden groter zijn dan de opgegeven waarde.
# Comment Wordt gebruikt om uitleg of opmerkingen toe te voegen aan de code, die niet worden uitgevoerd als onderdeel van het script.

Implementatie van DataFrame-rijselectie in Panda's

In de meegeleverde scripts is de belangrijkste taak het filteren van rijen uit een DataFrame op basis van specifieke kolomwaarden, een veel voorkomende vereiste bij gegevensanalyse. Het eerste script begint met het importeren van de Pandas-bibliotheek met import pandas as pd. Dit is essentieel omdat Pandas een krachtige bibliotheek voor gegevensmanipulatie in Python is. Vervolgens maken we een voorbeeld van een DataFrame met behulp van pd.DataFrame() met een woordenboek met gegevens voor namen, leeftijden en steden. Met deze structuur kunnen we tabelgegevens eenvoudig visualiseren en manipuleren. Het cruciale deel van het script is waar we rijen filteren met behulp van df[df['city'] == 'New York']. Met deze opdracht worden alle rijen geselecteerd waarin de waarde van de stadskolom 'New York' is. Het resultaat wordt opgeslagen in de variabele ny_rows, dat vervolgens wordt afgedrukt om het gefilterde DataFrame weer te geven.

Het tweede script volgt een vergelijkbare structuur, maar richt zich op het filteren van rijen op basis van een numerieke voorwaarde. Na het importeren van Panda's en het maken van een DataFrame met product-, prijs- en hoeveelheidskolommen, gebruikt het script df[df['price'] > 150] om rijen te filteren waarvan de prijs hoger is dan 150. Deze opdracht produceert een subset van het oorspronkelijke DataFrame met alleen de rijen die aan de opgegeven voorwaarde voldoen. Het resultaat wordt opgeslagen in expensive_products en afgedrukt ter verificatie. Beide scripts demonstreren de kracht en eenvoud van Pandas voor gegevensmanipulatie. Door booleaanse indexering te gebruiken, een methode waarbij we een reeks waar/onwaar-waarden doorgeven om gegevens te filteren, kunnen we efficiënt subsets van gegevens selecteren op basis van verschillende omstandigheden, waardoor het een hulpmiddel van onschatbare waarde is voor data-analisten en wetenschappers.

Rijen in een dataframe filteren op basis van kolomwaarden

Python - Panda's gebruiken voor DataFrame-bewerkingen

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

DataFrame-rijen opvragen op basis van kolomwaarden

Python - Geavanceerd filteren met Panda's

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

Geavanceerde technieken voor het selecteren van dataframerijen

Naast basisfiltering met booleaanse indexering biedt Pandas meer geavanceerde technieken voor het selecteren van rijen op basis van kolomwaarden. Eén zo'n methode is de query() functie, waarmee u SQL-achtige syntaxis kunt gebruiken om DataFrame-rijen te filteren. U kunt bijvoorbeeld gebruiken df.query('age > 25 and city == "New York"') om rijen te selecteren waarin de leeftijd hoger is dan 25 jaar en de stad New York is. Deze methode kan uw code leesbaarder maken, vooral onder complexe omstandigheden. Bovendien biedt Pandas de loc[] En iloc[] accessoires voor nauwkeurigere rijselectie. De loc[] accessor is op labels gebaseerd, wat betekent dat u rijen kunt filteren op hun labels of op een Booleaanse array. Daarentegen is de iloc[] accessor is gebaseerd op gehele posities, waardoor u rijen kunt filteren op hun indexposities.

Een andere krachtige functie in Pandas is de mogelijkheid om DataFrame-rijen te filteren met behulp van de isin() methode. Deze methode is handig wanneer u rijen moet filteren op basis van een lijst met waarden. Bijvoorbeeld, df[df['city'].isin(['New York', 'Los Angeles'])] selecteert rijen waarvan de stadskolomwaarde New York of Los Angeles is. Bovendien kunt u meerdere voorwaarden aan elkaar koppelen met behulp van de & En | operators om complexere filters te maken. Bijvoorbeeld, df[(df['age'] > 25) & (df['city'] == 'New York')] filtert rijen waarbij de leeftijd hoger is dan 25 jaar en de stad New York is. Deze geavanceerde technieken bieden een robuust raamwerk voor gegevensfiltering, waardoor Pandas een veelzijdig hulpmiddel is voor gegevensanalyse en -manipulatie.

Veelgestelde vragen over het selecteren van dataframerijen in Panda's

  1. Hoe filter ik rijen in een DataFrame op basis van meerdere kolomwaarden?
  2. U kunt Booleaanse indexering gebruiken met meerdere gecombineerde voorwaarden met behulp van & En |. Bijvoorbeeld: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Wat is het verschil tussen loc[] En iloc[]?
  4. loc[] is op labels gebaseerd, terwijl iloc[] is gebaseerd op gehele posities. Gebruik loc[] voor filteren op labels en iloc[] voor filteren op indexposities.
  5. Hoe kan ik de query() functie om DataFrame-rijen te filteren?
  6. De query() Met deze functie kunt u een SQL-achtige syntaxis gebruiken. Bijvoorbeeld: df.query('age > 25 and city == "New York"').
  7. Kan ik rijen filteren op basis van een lijst met waarden?
  8. Ja, u kunt gebruik maken van de isin() methode. Bijvoorbeeld: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Wat is de beste manier om rijen te filteren op basis van tekenreeksmatching?
  10. U kunt gebruik maken van de str.contains() methode. Bijvoorbeeld: df[df['city'].str.contains('New')].
  11. Hoe selecteer ik rijen waarin kolomwaarden ontbreken?
  12. U kunt gebruik maken van de isna() methode. Bijvoorbeeld: df[df['age'].isna()].
  13. Hoe kan ik rijen filteren met een aangepaste functie?
  14. U kunt gebruik maken van de apply() methode met een lambdafunctie. Bijvoorbeeld: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Kan ik rijen filteren op basis van indexwaarden?
  16. Ja, u kunt gebruik maken van de index.isin() methode. Bijvoorbeeld: df[df.index.isin([1, 3, 5])].

Belangrijkste aandachtspunten voor dataframerijselectie

Het selecteren van rijen uit een DataFrame op basis van kolomwaarden is een fundamentele vaardigheid bij data-analyse met Pandas. Met behulp van booleaanse indexering, loc[], iloc[], query(), En isin() methoden zorgen voor een efficiënte gegevensfiltering. Als u deze technieken beheerst, vergroot u uw vermogen om datasets effectief te manipuleren en analyseren.