Hvordan løpe gjennom DataFrames med pandas iterrows()
Python pandas-funksjonen DataFrame.iterrows() brukes til å iterere over rader i en pandas DataFrame. For hver rad gir den en Python-tuple som inneholder radindeksen og et Series-objekt med radenes data.
Hva er syntaksen for pandas iterrows()?
Den grunnleggende syntaksen til pandas DataFrame.iterrows() er enkel, siden funksjonen ikke tar noen parametere:
df.iterrows()pythonI dette kodeeksemplet er df DataFrame-en du ønsker å iterere gjennom.
Hvordan bruke funksjonen pandas iterrows()
Funksjonen DataFrame.iterrows() brukes vanligvis når du trenger å behandle data rad for rad. Den kombineres ofte med Python for-løkker.
Legge sammen verdier i en kolonne
La oss se på et eksempel på en DataFrame som inneholder kolonnene Name, Age og Score:
import pandas as pd
# Creating an example DataFrame
data = {'Name': ['Anna', 'Ben', 'Clara'],
'Age': [23, 35, 29],
'Score': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)pythonKoden ovenfor resulterer i følgende DataFrame:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85La oss nå beregne summen av poengene. Vi kan bruke pandas DataFrame.iterrows() til å gjøre dette:
# Calculating the total score
total_score = 0
for index, row in df.iterrows():
total_score += row['Score']
print(f"The total score is: {total_score}")pythonI dette eksemplet brukte vi iterrows() -funksjonen til å løpe gjennom hver rad og legge sammen verdiene i kolonnen Score én etter én. Dette gir følgende resultat:
The total score is: 265Når du bruker pandas iterrows(), er det viktig å ikke endre dataene du itererer over direkte. Avhengig av datatypen kan dette føre til uventede resultater og utilsiktet oppførsel.
Behandling av rader ved hjelp av betingelser
Funksjonen iterrows() kan også brukes til å bruke betingelser på enkelte rader i DataFrame. La oss for eksempel si at du vil hente navnene på alle over 30 år i DataFrame fra det siste eksemplet:
# Retrieving names of people over 30 years old
names = []
for index, row in df.iterrows():
if row['Age'] > 30:
names.append(row['Name'])
print(f"People over 30 years old: {names}")pythonI dette eksemplet brukte vi DataFrame.iterrows() til å gå gjennom hver rad med data. Inne i for-sløyfen sjekker den verdiene i kolonnen Age og lagrer bare navnene på personer over 30 år i Python-listen names. Dette gjøres ved hjelp av Python-funksjonen append(). Her er resultatet:
People over 30 years old: ['Ben']Selv om det er enkelt å bruke DataFrames.iterrows(), må du huske at det kanskje ikke fungerer effektivt på store DataFrames. I mange tilfeller kan andre alternativer som apply() eller vektoriserte beregninger brukes for å oppnå bedre ytelse.