Filtrering af rækker i Pandas DataFrames
Pandas er et kraftfuldt bibliotek i Python til datamanipulation og -analyse. En almindelig opgave er at vælge rækker fra en DataFrame baseret på kolonneværdier, svarende til SQL's SELECT * FROM tabel WHERE column_name = some_value.
Denne guide vil lede dig gennem forskellige metoder til at opnå dette i Pandas, hvilket gør det nemt at filtrere dine data effektivt. Uanset om du er nybegynder eller erfaren bruger, vil disse tips forbedre dine datahåndteringsevner.
Kommando | Beskrivelse |
---|---|
pd.DataFrame(data) | Opretter en DataFrame fra en ordbog over data. |
df[column_name] | Får adgang til en kolonne i DataFrame efter navn. |
df[condition] | Filtrerer DataFrame baseret på en betingelse anvendt på en kolonne. |
print(selected_rows) | Udskriver DataFrame eller en delmængde af den til konsollen. |
df[df['Age'] >df[df['Age'] > 25] | Vælger rækker, hvor kolonneværdierne 'Alder' er større end 25. |
df[df['City'] == 'Chicago'] | Vælger rækker, hvor 'By'-kolonnens værdier er lig med 'Chicago'. |
Forstå DataFrame Row Selection i Pandas
De medfølgende scripts demonstrerer, hvordan man vælger rækker fra en DataFrame baseret på kolonneværdier ved hjælp af Pandas-biblioteket i Python. Det første script begynder med at importere Pandas-biblioteket med import pandas as pd kommando. Den opretter derefter en eksempeldataramme ved hjælp af en ordbog over data, som konverteres til en dataramme med pd.DataFrame(data) kommando. Scriptet illustrerer derefter to metoder til rækkevalg: valg af rækker, hvor kolonneværdien 'Alder' er større end 25 vha. df[df['Age'] > 25], og vælge rækker, hvor kolonneværdien 'By' er 'Chicago' ved hjælp af df[df['City'] == 'Chicago']. Disse filtrerede DataFrames udskrives ved hjælp af print() funktion for at vise de valgte rækker.
Det andet script følger en lignende struktur, men bruger forskellige data og udvælgelseskriterier. Det opretter en DataFrame med produktinformation, herunder kolonnerne 'Produkt', 'Pris' og 'Lager'. Rækker vælges, hvor 'Pris' er mindre end eller lig med 200 med df[df['Price'] <= 200], og hvor 'Stock' bruger mere end 40 df[df['Stock'] > 40]. Formålet med disse scripts er at vise, hvordan man filtrerer DataFrame-rækker baseret på specifikke forhold, svarende til hvordan du ville bruge en SQL-forespørgsel til at vælge rækker fra en tabel baseret på en kolonneværdi. Ved at forstå og anvende disse kommandoer kan du effektivt manipulere og analysere data i dine DataFrames.
Valg af rækker i en dataramme ved hjælp af kolonneværdier i pandaer
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)
Filtrering af data i en dataramme baseret på kolonnekriterier
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)
Avancerede teknikker til at vælge DataFrame-rækker i pandaer
Udover grundlæggende filtrering ved hjælp af boolesk indeksering tilbyder Pandas avancerede teknikker til at vælge rækker baseret på kolonneværdier. En effektiv metode er at bruge query() funktion, som giver dig mulighed for at filtrere rækker med et forespørgselsudtryk, hvilket gør syntaksen renere og ofte mere intuitiv. For eksempel i stedet for at bruge df[df['Age'] > 25], kan du skrive df.query('Age > 25'). Denne metode er især nyttig, når der er tale om mere komplekse forhold, eller når kolonnenavnene indeholder mellemrum. Derudover isin() funktion er fordelagtig, når du vil filtrere rækker baseret på en liste med værdier. For at vælge rækker, hvor kolonneværdien 'By' er enten 'Chicago' eller 'New York', kan du bruge df[df['City'].isin(['Chicago', 'New York'])].
En anden teknik involverer loc og iloc indeksere. Det loc indexer er etiketbaseret, så du kan vælge rækker baseret på rækkeetiketter og kolonnenavne, mens iloc er heltal-placeringsbaseret, hvilket muliggør valg efter række- og kolonnenumre. Denne fleksibilitet er især nyttig til at vælge rækker baseret på en betingelse anvendt på en anden kolonne. For eksempel, df.loc[df['Age'] > 25, 'Name'] returnerer navnene på personer, der er ældre end 25. Disse metoder udvider dit værktøjssæt til effektiv håndtering og analyse af data i Pandas, og tilbyder mere læsbar og vedligeholdelig kode.
Almindelige spørgsmål og svar om valg af DataFrame-rækker
- Hvordan kan jeg vælge rækker baseret på flere betingelser?
- Du kan bruge query() funktion eller kombinere forhold med logiske operatorer som & og |. For eksempel, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- Kan jeg filtrere rækker baseret på en liste over værdier?
- Ja, brug isin() fungere. For eksempel, df[df['City'].isin(['Chicago', 'New York'])].
- Hvad er forskellen mellem loc og iloc?
- loc er etiketbaseret, mens iloc er heltal-placeringsbaseret. Brug loc med række/kolonne etiketter og iloc med række-/kolonneindeks.
- Hvordan kan jeg vælge specifikke kolonner, mens jeg filtrerer rækker?
- Du kan bruge loc. For eksempel, df.loc[df['Age'] > 25, ['Name', 'City']].
- Hvordan håndterer jeg manglende værdier, når jeg vælger rækker?
- Brug dropna() funktion til at fjerne rækker med manglende værdier, eller fillna() at erstatte dem med en specificeret værdi.
- Kan jeg bruge regulære udtryk til at filtrere rækker?
- Ja, den str.contains() funktion med regex=True parameter giver dig mulighed for at filtrere rækker baseret på regex-mønstre. For eksempel, df[df['Name'].str.contains('^A', regex=True)].
- Hvordan filtrerer jeg rækker baseret på indekset?
- Du kan bruge loc med indeksnavnet. For eksempel, df.loc[df.index == 'some_index'].
- Hvad hvis mine kolonnenavne indeholder mellemrum eller specialtegn?
- Brug query() funktion som kan håndtere sådanne kolonnenavne med backticks. For eksempel, df.query('`column name` == value').
Endelige tanker om DataFrame Row Selection Techniques
At vælge rækker fra en DataFrame baseret på kolonneværdier i Pandas er en afgørende færdighed for datamanipulation. De forskellige diskuterede metoder, herunder boolsk indeksering, query(), isin(), og etiket-baseret og heltal-placering-baseret indeksering med loc og iloc, leverer kraftfulde værktøjer til at filtrere data effektivt. Beherskelse af disse teknikker muliggør bedre dataanalyse og renere, mere vedligeholdelsesvenlig kode.