Välja DataFrame-rader baserat på kolumnvärden i Python

Välja DataFrame-rader baserat på kolumnvärden i Python
Python

Använda pandor för att filtrera dataramar efter kolumnvärden

När du arbetar med data i Python erbjuder Pandas-biblioteket kraftfulla verktyg för datamanipulation och analys. En vanlig uppgift är att välja rader från en DataFrame baserat på värdena i en specifik kolumn. Denna operation är besläktad med SQL-frågan: SELECT * FROM table WHERE kolumnnamn = något_värde.

I den här artikeln kommer vi att utforska hur man uppnår detta i Pandas med olika metoder. Oavsett om du filtrerar efter ett enda värde eller flera kriterier, erbjuder Pandas intuitiva och effektiva sätt att hantera sådana operationer. Låt oss dyka in i detaljerna.

Kommando Beskrivning
pd.DataFrame() Skapar ett DataFrame-objekt från en ordbok eller andra datastrukturer.
df[condition] Filtrerar DataFrame-raderna baserat på ett villkor och returnerar endast de som uppfyller kriterierna.
print() Matar ut det angivna meddelandet eller DataFrame till konsolen.
df['column'] == value Skapar en boolesk serie som används för att filtrera rader där kolumnen matchar det angivna värdet.
df['column'] >df['column'] > value Skapar en boolesk serie som används för att filtrera rader där kolumnvärdena är större än det angivna värdet.
# Comment Används för att lägga till förklaringar eller anteckningar i koden, som inte exekveras som en del av skriptet.

Implementera DataFrame Row Selection i Pandas

I de tillhandahållna skripten är nyckeluppgiften att filtrera rader från en DataFrame baserat på specifika kolumnvärden, ett vanligt krav vid dataanalys. Det första skriptet börjar med att importera Pandas-biblioteket med import pandas as pd. Detta är viktigt eftersom Pandas är ett kraftfullt datamanipuleringsbibliotek i Python. Därefter skapar vi ett exempel på DataFrame med hjälp av pd.DataFrame() med en ordbok som innehåller data för namn, åldrar och städer. Denna struktur gör att vi enkelt kan visualisera och manipulera tabelldata. Den avgörande delen av skriptet är var vi filtrerar rader med hjälp av df[df['city'] == 'New York']. Det här kommandot väljer alla rader där stadskolumnens värde är 'New York'. Resultatet lagras i variabeln ny_rows, som sedan skrivs ut för att visa den filtrerade DataFrame.

Det andra skriptet följer en liknande struktur men fokuserar på att filtrera rader baserat på ett numeriskt villkor. Efter att ha importerat Pandas och skapat en DataFrame med produkt-, pris- och kvantitetskolumner, använder skriptet df[df['price'] > 150] för att filtrera rader där priset är högre än 150. Detta kommando producerar en delmängd av den ursprungliga DataFrame som endast innehåller de rader som uppfyller det angivna villkoret. Resultatet lagras i expensive_products och skrivs ut för verifiering. Båda skripten visar kraften och enkelheten hos Pandas för datamanipulation. Genom att använda boolesk indexering, en metod där vi skickar en serie sanna/falska värden för att filtrera data, kan vi effektivt välja delmängder av data baserat på olika förhållanden, vilket gör det till ett ovärderligt verktyg för dataanalytiker och forskare.

Filtrera rader i en dataram baserat på kolumnvärden

Python - Använda Pandas för DataFrame Operations

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

Fråga i DataFrame-rader baserat på kolumnvärden

Python - Avancerad filtrering med pandor

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

Avancerade tekniker för att välja DataFrame-rader

Förutom grundläggande filtrering med boolesk indexering erbjuder Pandas mer avancerade tekniker för att välja rader baserat på kolumnvärden. En sådan metod är query() funktion, som låter dig använda SQL-liknande syntax för att filtrera DataFrame-rader. Du kan till exempel använda df.query('age > 25 and city == "New York"') för att välja rader där åldern är högre än 25 och staden är New York. Denna metod kan göra din kod mer läsbar, särskilt för komplexa förhållanden. Dessutom tillhandahåller Pandas loc[] och iloc[] tillbehör för mer exakt radval. De loc[] accessor är etikettbaserad, vilket innebär att du kan filtrera rader efter deras etiketter eller en boolesk array. Däremot iloc[] accessor är heltalspositionsbaserad, vilket gör att du kan filtrera rader efter deras indexpositioner.

En annan kraftfull funktion i Pandas är möjligheten att filtrera DataFrame-rader med hjälp av isin() metod. Den här metoden är användbar när du behöver filtrera rader baserat på en lista med värden. Till exempel, df[df['city'].isin(['New York', 'Los Angeles'])] väljer rader där stadskolumnen är antingen New York eller Los Angeles. Dessutom kan du kedja flera villkor med hjälp av & och | operatörer för att skapa mer komplexa filter. Till exempel, df[(df['age'] > 25) & (df['city'] == 'New York')] filtrerar rader där åldern är äldre än 25 och staden är New York. Dessa avancerade tekniker ger ett robust ramverk för datafiltrering, vilket gör Pandas till ett mångsidigt verktyg för dataanalys och manipulation.

Vanliga frågor om att välja DataFrame-rader i Pandas

  1. Hur filtrerar jag rader i en DataFrame baserat på värden för flera kolumner?
  2. Du kan använda boolesk indexering med flera villkor kombinerat med & och |. Till exempel: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Vad är skillnaden mellan loc[] och iloc[]?
  4. loc[] är etikettbaserad, medan iloc[] är heltalspositionsbaserad. Använda sig av loc[] för filtrering efter etiketter och iloc[] för filtrering efter indexpositioner.
  5. Hur kan jag använda query() funktion för att filtrera DataFrame-rader?
  6. De query() funktionen låter dig använda SQL-liknande syntax. Till exempel: df.query('age > 25 and city == "New York"').
  7. Kan jag filtrera rader baserat på en lista med värden?
  8. Ja, du kan använda isin() metod. Till exempel: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Vad är det bästa sättet att filtrera rader baserat på strängmatchning?
  10. Du kan använda str.contains() metod. Till exempel: df[df['city'].str.contains('New')].
  11. Hur väljer jag rader där kolumnvärden saknas?
  12. Du kan använda isna() metod. Till exempel: df[df['age'].isna()].
  13. Hur kan jag filtrera rader med en anpassad funktion?
  14. Du kan använda apply() metod med lambdafunktion. Till exempel: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Kan jag filtrera rader baserat på indexvärden?
  16. Ja, du kan använda index.isin() metod. Till exempel: df[df.index.isin([1, 3, 5])].

Nyckelalternativ för DataFrame-radval

Att välja rader från en DataFrame baserat på kolumnvärden är en grundläggande färdighet i dataanalys med Pandas. Använder boolesk indexering, loc[], iloc[], query(), och isin() metoder möjliggör effektiv datafiltrering. Att behärska dessa tekniker förbättrar din förmåga att manipulera och analysera datauppsättningar effektivt.