Filtrere rader i Pandas DataFrames
Pandas er et kraftig bibliotek i Python for datamanipulering og analyse. En vanlig oppgave er å velge rader fra en DataFrame basert på kolonneverdier, lik SQLs SELECT * FROM-tabell WHERE column_name = some_value.
Denne guiden vil lede deg gjennom ulike metoder for å oppnå dette i Pandas, noe som gjør det enkelt å filtrere dataene dine effektivt. Enten du er nybegynner eller erfaren bruker, vil disse tipsene forbedre dine datahåndteringsferdigheter.
Kommando | Beskrivelse |
---|---|
pd.DataFrame(data) | Oppretter en DataFrame fra en ordbok med data. |
df[column_name] | Får tilgang til en kolonne i DataFrame etter navn. |
df[condition] | Filtrerer DataFrame basert på en betingelse brukt på en kolonne. |
print(selected_rows) | Skriver ut DataFrame eller et undersett av det til konsollen. |
df[df['Age'] >df[df['Age'] > 25] | Velger rader der verdiene i kolonnen 'Alder' er større enn 25. |
df[df['City'] == 'Chicago'] | Velger rader der «City»-kolonneverdiene er lik «Chicago». |
Forstå DataFrame radvalg i pandaer
Skriptene som følger med demonstrerer hvordan du velger rader fra en DataFrame basert på kolonneverdier ved å bruke Pandas-biblioteket i Python. Det første skriptet begynner med å importere Pandas-biblioteket med import pandas as pd kommando. Deretter oppretter den en eksempeldataramme ved hjelp av en dataordbok, som konverteres til en dataramme med pd.DataFrame(data) kommando. Skriptet illustrerer deretter to metoder for radvalg: velge rader der 'Alder'-kolonneverdien er større enn 25 ved å bruke df[df['Age'] > 25], og velge rader der 'By'-kolonneverdien er 'Chicago' ved å bruke df[df['City'] == 'Chicago']. Disse filtrerte datarammene skrives ut ved hjelp av print() funksjon for å vise de valgte radene.
Det andre skriptet følger en lignende struktur, men bruker andre data og utvalgskriterier. Den oppretter en DataFrame med produktinformasjon, inkludert kolonnene 'Produkt', 'Pris' og 'Lager'. Rader velges der 'Pris' er mindre enn eller lik 200 med df[df['Price'] <= 200], og hvor 'lageret' bruker mer enn 40 df[df['Stock'] > 40]. Hensikten med disse skriptene er å vise hvordan du filtrerer DataFrame-rader basert på spesifikke forhold, på samme måte som du vil bruke en SQL-spørring til å velge rader fra en tabell basert på en kolonneverdi. Ved å forstå og bruke disse kommandoene kan du effektivt manipulere og analysere data i DataFrames.
Velge rader i en dataramme ved hjelp av kolonneverdier i pandaer
Python med Pandas Library
# 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 av data i en dataramme basert på kolonnekriterier
Python med Pandas Library
# 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)
Avanserte teknikker for å velge DataFrame-rader i pandaer
I tillegg til grunnleggende filtrering ved bruk av boolsk indeksering, tilbyr Pandas avanserte teknikker for å velge rader basert på kolonneverdier. En kraftig metode er å bruke query() funksjon, som lar deg filtrere rader med et spørringsuttrykk, noe som gjør syntaksen renere og ofte mer intuitiv. For eksempel i stedet for å bruke df[df['Age'] > 25], du kan skrive df.query('Age > 25'). Denne metoden er spesielt nyttig når du arbeider med mer komplekse forhold eller når kolonnenavnene inneholder mellomrom. I tillegg har isin() funksjonen er nyttig når du vil filtrere rader basert på en liste med verdier. For å velge rader der «By»-kolonneverdien enten er «Chicago» eller «New York», kan du bruke df[df['City'].isin(['Chicago', 'New York'])].
En annen teknikk involverer loc og 1. 3 indeksere. De loc indekser er etikettbasert, slik at du kan velge rader basert på radetiketter og kolonnenavn, mens 1. 3 er heltallsbasert, og muliggjør valg etter rad- og kolonnenummer. Denne fleksibiliteten er spesielt nyttig for å velge rader basert på en betingelse brukt på en annen kolonne. For eksempel, df.loc[df['Age'] > 25, 'Name'] vil returnere navn på personer eldre enn 25. Disse metodene utvider verktøysettet ditt for effektiv håndtering og analyse av data i Pandas, og tilbyr mer lesbar og vedlikeholdbar kode.
Vanlige spørsmål og svar om valg av DataFrame-rader
- Hvordan kan jeg velge rader basert på flere forhold?
- Du kan bruke query() funksjon eller kombinere forhold med logiske operatorer som & og |. For eksempel, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- Kan jeg filtrere rader basert på en liste med verdier?
- Ja, bruk isin() funksjon. For eksempel, df[df['City'].isin(['Chicago', 'New York'])].
- Hva er forskjellen mellom loc og 1. 3?
- loc er etikettbasert, mens 1. 3 er heltallsplasseringsbasert. Bruk loc med rad/kolonne etiketter og 1. 3 med rad-/kolonneindekser.
- Hvordan kan jeg velge spesifikke kolonner mens jeg filtrerer rader?
- Du kan bruke loc. For eksempel, df.loc[df['Age'] > 25, ['Name', 'City']].
- Hvordan håndterer jeg manglende verdier når jeg velger rader?
- Bruke dropna() funksjon for å fjerne rader med manglende verdier, eller fillna() for å erstatte dem med en spesifisert verdi.
- Kan jeg bruke regulære uttrykk for å filtrere rader?
- Ja, det str.contains() funksjon med regex=True parameter lar deg filtrere rader basert på regex-mønstre. For eksempel, df[df['Name'].str.contains('^A', regex=True)].
- Hvordan filtrerer jeg rader basert på indeksen?
- Du kan bruke loc med indeksnavnet. For eksempel, df.loc[df.index == 'some_index'].
- Hva om kolonnenavnene mine inneholder mellomrom eller spesialtegn?
- Bruke query() funksjon som kan håndtere slike kolonnenavn med backticks. For eksempel, df.query('`column name` == value').
Siste tanker om dataframe radvalgsteknikker
Å velge rader fra en DataFrame basert på kolonneverdier i Pandas er en avgjørende ferdighet for datamanipulering. De ulike metodene som er diskutert, inkludert boolsk indeksering, query(), isin(), og etikettbasert og heltallsplasseringsbasert indeksering med loc og 1. 3, gir kraftige verktøy for å filtrere data effektivt. Mestring av disse teknikkene muliggjør bedre dataanalyse og renere, mer vedlikeholdbar kode.