Python pandas -funktiota DataFrame.iterrows() käytetään tois­ta­maan pandas DataFrame -taulukon rivejä. Se tarjoaa jo­kai­sel­le riville Python-tuple-tyyppisen objektin, joka sisältää rivin indeksin ja Series-objektin, jossa on rivin tiedot.

Mikä on pandas iterrows():n syntaksi?

Pandas DataFrame.iterrows():n pe­rus­ra­ken­teet ovat yk­sin­ker­tai­set, koska funktio ei vaadi pa­ra­met­re­ja:

df.iterrows()
python

Tässä koo­die­si­mer­kis­sä df on DataFrame, jonka haluat iteroida.

Kuinka käyttää pandas iterrows() -funktiota

DataFrame.iterrows() -funktiota käytetään tyy­pil­li­ses­ti, kun tietoja on kä­si­tel­tä­vä rivi riviltä. Se yh­dis­te­tään usein Pythonin for-sil­mu­koi­hin.

Sarakkeen arvojen yh­teen­las­ke­mi­nen

Kat­so­taan­pa esi­merk­kiä DataFrame-tau­lu­kos­ta, joka sisältää sarakkeet Name, Age ja 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)
python

Yllä oleva koodi tuottaa seuraavan DataFrame-kehyksen:

Name  Age  Score
0   Anna    23     88
1    Ben    35     92
2  Clara    29     85

Lasketaan nyt pisteiden summa. Voimme käyttää tähän pandas DataFrame.iterrows():

# 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}")
python

Tässä esi­mer­kis­sä käytimme pandas iterrows() -funktiota kier­tä­mään jokaisen rivin läpi ja laskemaan yhteen Score -sarakkeen arvot yksi ker­ral­laan. Tämä tuottaa seuraavan tuloksen:

The total score is: 265
Huomio

Kun käytät pandas iterrows(), on tärkeää , ettet muokkaa suoraan tois­tet­ta­via tietoja. Tie­to­tyy­pis­tä riippuen tämä voi johtaa odot­ta­mat­to­miin tuloksiin ja ta­hat­to­maan toi­min­taan.

Rivien käsittely ehtojen avulla

iterrows() voidaan käyttää myös ehtojen so­vel­ta­mi­seen DataFrame-taulukon yk­sit­täi­siin riveihin. Oletetaan esi­mer­kik­si, että haluat hakea DataFrame-tau­lu­kos­ta edellisen esimerkin kaikki yli 30-vuotiaat henkilöt:

# 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}")
python

Tässä esi­mer­kis­sä käytimme DataFrame.iterrows() käy­däk­sem­me läpi jokaisen datarivin. For-silmukan sisällä se tarkistaa Age-sarakkeen arvot ja tallentaa vain yli 30-vuo­tiai­den hen­ki­löi­den nimet Python-listaan names. Tämä tehdään Pythonin append()-funk­tiol­la. Tässä on tulos:

People over 30 years old: ['Ben']
Huomio

Vaikka DataFrames.iterrows() on help­po­käyt­töi­nen, on syytä muistaa, että se ei vält­tä­mät­tä toimi te­hok­kaas­ti suurissa DataFrame-ke­hyk­sis­sä. Monissa ta­pauk­sis­sa voidaan käyttää muita vaih­toeh­to­ja, kuten apply() tai vek­to­roi­tu­ja laskelmia, parempaan suo­ri­tus­ky­kyyn pää­se­mi­sek­si.

Siirry pää­va­lik­koon