Hur man filtrerar rader i en Pandas DataFrame baserat på kolumnvärden

Temp mail SuperHeros
Hur man filtrerar rader i en Pandas DataFrame baserat på kolumnvärden
Hur man filtrerar rader i en Pandas DataFrame baserat på kolumnvärden

Filtrera rader i Pandas DataFrames

Pandas är ett kraftfullt bibliotek i Python för datamanipulation och analys. En vanlig uppgift är att välja rader från en DataFrame baserat på kolumnvärden, liknande SQLs SELECT * FROM-tabell WHERE kolumnnamn = något_värde.

Den här guiden går igenom olika metoder för att uppnå detta i Pandas, vilket gör det enkelt att filtrera din data effektivt. Oavsett om du är nybörjare eller erfaren användare, kommer dessa tips att förbättra dina färdigheter i datahantering.

Kommando Beskrivning
pd.DataFrame(data) Skapar en DataFrame från en ordbok med data.
df[column_name] Åtkomst till en kolumn i DataFrame efter namn.
df[condition] Filtrerar DataFrame baserat på ett villkor som tillämpas på en kolumn.
print(selected_rows) Skriver ut DataFrame eller en delmängd av den till konsolen.
df[df['Age'] >df[df['Age'] > 25] Väljer rader där kolumnvärdena "Ålder" är större än 25.
df[df['City'] == 'Chicago'] Väljer rader där kolumnvärdena för "Stad" är lika med "Chicago".

Förstå DataFrame Row Selection i Pandas

Skripten som tillhandahålls visar hur man väljer rader från en DataFrame baserat på kolumnvärden med hjälp av Pandas-biblioteket i Python. Det första skriptet börjar med att importera Pandas-biblioteket med import pandas as pd kommando. Den skapar sedan ett exempel på DataFrame med hjälp av en ordbok med data, som konverteras till en DataFrame med pd.DataFrame(data) kommando. Skriptet illustrerar sedan två metoder för radval: att välja rader där kolumnvärdet 'Ålder' är större än 25 med df[df['Age'] > 25], och välja rader där kolumnen 'Stad' är 'Chicago' med hjälp av df[df['City'] == 'Chicago']. Dessa filtrerade DataFrames skrivs ut med hjälp av print() funktion för att visa de valda raderna.

Det andra skriptet följer en liknande struktur men använder andra data och urvalskriterier. Den skapar en DataFrame med produktinformation, inklusive kolumner 'Produkt', 'Pris' och 'Lager'. Rader väljs där 'Pris' är mindre än eller lika med 200 med df[df['Price'] <= 200], och där "Stock" är mer än 40 använder df[df['Stock'] > 40]. Syftet med dessa skript är att visa hur man filtrerar DataFrame-rader baserat på specifika villkor, liknande hur du skulle använda en SQL-fråga för att välja rader från en tabell baserat på ett kolumnvärde. Genom att förstå och tillämpa dessa kommandon kan du effektivt manipulera och analysera data i dina DataFrames.

Välja rader i en dataram med kolumnvärden i pandor

Python med Pandas bibliotek

# Importing the necessary library
import pandas as pd

# Creating a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 27, 22, 32, 29],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)

# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)

# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)

Filtrera data i en dataram baserat på kolumnkriterier

Python med Pandas bibliotek

# Importing pandas library
import pandas as pd

# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
        'Price': [100, 150, 200, 250, 300],
        'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)

# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)

# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)

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

Förutom grundläggande filtrering med boolesk indexering, erbjuder Pandas avancerade tekniker för att välja rader baserat på kolumnvärden. En kraftfull metod är att använda query() funktion, som låter dig filtrera rader med ett frågeuttryck, vilket gör syntaxen renare och ofta mer intuitiv. Till exempel istället för att använda df[df['Age'] > 25], du kan skriva df.query('Age > 25'). Den här metoden är särskilt användbar när man hanterar mer komplexa villkor eller när kolumnnamnen innehåller mellanslag. Dessutom isin() funktion är fördelaktig när du vill filtrera rader baserat på en lista med värden. För att till exempel välja rader där kolumnvärdet "Stad" är antingen "Chicago" eller "New York", kan du använda df[df['City'].isin(['Chicago', 'New York'])].

En annan teknik involverar loc och iloc indexerare. De loc indexeraren är etikettbaserad, så att du kan välja rader baserat på radetiketter och kolumnnamn, medan iloc är heltal-platsbaserad, vilket möjliggör val efter rad- och kolumnnummer. Denna flexibilitet är särskilt användbar för att välja rader baserat på ett villkor som tillämpas på en annan kolumn. Till exempel, df.loc[df['Age'] > 25, 'Name'] kommer att returnera namnen på personer äldre än 25. Dessa metoder utökar din verktygslåda för att effektivt hantera och analysera data i Pandas, och erbjuder mer läsbar och underhållbar kod.

Vanliga frågor och svar om att välja DataFrame-rader

  1. Hur kan jag välja rader baserat på flera villkor?
  2. Du kan använda query() funktion eller kombinera villkor med logiska operatorer som & och |. Till exempel, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
  3. Kan jag filtrera rader baserat på en lista med värden?
  4. Ja, använd isin() fungera. Till exempel, df[df['City'].isin(['Chicago', 'New York'])].
  5. Vad är skillnaden mellan loc och iloc?
  6. loc är etikettbaserad, medan iloc är heltalsplatsbaserad. Använda sig av loc med rad/kolumnetiketter och iloc med rad-/kolumnindex.
  7. Hur kan jag välja specifika kolumner när jag filtrerar rader?
  8. Du kan använda loc. Till exempel, df.loc[df['Age'] > 25, ['Name', 'City']].
  9. Hur hanterar jag saknade värden när jag väljer rader?
  10. Använd dropna() funktion för att ta bort rader med saknade värden, eller fillna() för att ersätta dem med ett angivet värde.
  11. Kan jag använda reguljära uttryck för att filtrera rader?
  12. Ja den str.contains() funktion med regex=True parameter låter dig filtrera rader baserat på regexmönster. Till exempel, df[df['Name'].str.contains('^A', regex=True)].
  13. Hur filtrerar jag rader baserat på indexet?
  14. Du kan använda loc med indexnamnet. Till exempel, df.loc[df.index == 'some_index'].
  15. Vad händer om mina kolumnnamn innehåller mellanslag eller specialtecken?
  16. Använd query() funktion som kan hantera sådana kolumnnamn med backticks. Till exempel, df.query('`column name` == value').

Sista tankar om dataframe radvalstekniker

Att välja rader från en DataFrame baserat på kolumnvärden i Pandas är en avgörande färdighet för datamanipulation. De olika metoderna som diskuteras, inklusive boolesk indexering, query(), isin(), och etikettbaserad och heltalsplatsbaserad indexering med loc och iloc, tillhandahåller kraftfulla verktyg för att filtrera data effektivt. Behärskning av dessa tekniker möjliggör bättre dataanalys och renare, mer underhållbar kod.