Kuidas läbida DataFrames'i pandas iterrows() abil
Python pandas funktsiooni DataFrame.iterrows() kasutatakse pandas DataFrame’i ridade läbimiseks. Iga rea jaoks pakub see Python-tuple’it, mis sisaldab rea indeksit ja Series-objekti rea andmetega.
Mis on pandas iterrows() süntaks?
Pandas DataFrame.iterrows() põhiline süntaks on lihtne, kuna funktsioon ei võta vastu mingeid parameetreid:
df.iterrows()pythonSelles koodinäites on df andmestik, mida soovite läbi käia.
Kuidas kasutada pandas iterrows() funktsiooni
Funktsiooni DataFrame.iterrows() kasutatakse tavaliselt siis, kui on vaja töödelda andmeid rida haaval. Seda kombineeritakse sageli Python for-tsüklitega.
Veeru väärtuste liitmine
Vaadakem näidet DataFrame’ist, mis sisaldab veerge 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)pythonEespool toodud kood annab järgmise DataFrame’i:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Nüüd arvutame punktide summa. Selleks saame kasutada 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}")pythonSelles näites kasutasime pandas iterrows() funktsiooni, et läbida iga rida, liites üksteise järel kokku veerus „Score” olevad väärtused. See annab järgmise tulemuse:
The total score is: 265Pandas iterrows() kasutamisel on oluline mitte muuta otseselt andmeid, mida iteratsiooniga töödeldakse. Sõltuvalt andmetüübist võib see põhjustada ootamatuid tulemusi ja soovimatut käitumist.
Ridade töötlemine tingimuste abil
Funktsiooni iterrows() saab kasutada ka tingimuste rakendamiseks DataFrame’i üksikutele ridadele. Näiteks, oletame, et soovite viimasest näidisest DataFrame’ist välja otsida kõik üle 30-aastased isikud:
# 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}")pythonSelles näites kasutasime DataFrame.iterrows(), et läbida iga andmereaga. For-tsükli sees kontrollitakse vanuse veeru väärtusi ja salvestatakse Python-nimekirja names ainult üle 30-aastaste inimeste nimed. Selleks kasutatakse Python-funktsiooni append(). Siin on tulemus:
People over 30 years old: ['Ben']Kuigi DataFrames.iterrows() on lihtne kasutada, pea meeles, et see ei pruugi suuremate andmestruktuuride puhul tõhusalt töötada. Paljudel juhtudel saab parema tulemuse saavutamiseks kasutada teisi võimalusi, nagu apply() või vektoriseeritud arvutused.