Kaip kartoti DataFrames su pandas iterrows()
Python pandas funkcija DataFrame.iterrows() naudojama kartoti pandas DataFrame eilutes. Kiekvienai eilutei ji pateikia Python tuple, kuriame yra eilutės indeksas ir Series objektas su eilutės duomenimis.
Kokia yra pandas iterrows() sintaksė?
Pagrindinė pandas DataFrame.iterrows() sintaksė yra paprasta, nes funkcija nepriima jokių parametrų:
df.iterrows()pythonŠiame kodo pavyzdyje df yra DataFrame, kurį norite kartoti.
Kaip naudoti pandas iterrows() funkciją
DataFrame.iterrows() funkcija paprastai naudojama, kai reikia apdoroti duomenis eilutė po eilutės. Ji dažnai derinama su Python for-sąlygomis.
Vertių sudėties stulpelyje
Pažvelkime į pavyzdinį duomenų rėmelį, kuriame yra stulpeliai „Vardas“, „Amžius“ ir „Rezultatas“:
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)pythonPateiktas kodas sukuria tokį duomenų rėmelį:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Dabar apskaičiuokime balų sumą. Tam galime naudoti 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Šiame pavyzdyje naudojome pandas iterrows() funkciją, kad apibėgtume kiekvieną eilutę, po vieną sudėdami stulpelyje „Score“ esančias reikšmes. Tai duoda tokį rezultatą:
The total score is: 265Naudojant pandas iterrows(), svarbu tiesiogiai nemodifikuoti duomenų, kuriuos kartojate. Priklausomai nuo duomenų tipo, tai gali sukelti netikėtus rezultatus ir nenumatytą elgesį.
Eilučių apdorojimas naudojant sąlygas
Funkcija iterrows() taip pat gali būti naudojama sąlygoms taikyti atskiriems DataFrame eilutėms. Pavyzdžiui, tarkime, kad norite gauti visų vyresnių nei 30 metų asmenų vardus iš paskutinio pavyzdžio DataFrame:
# 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Šiame pavyzdyje naudojome DataFrame.iterrows(), kad pereitume per kiekvieną duomenų eilutę. For-loop viduje jis patikrina amžiaus stulpelyje esančias vertes ir Python sąraše saugo tik vyresnių nei 30 metų žmonių vardus names. Tai daroma naudojant Python append() funkciją. Štai rezultatas:
People over 30 years old: ['Ben']Nors DataFrames.iterrows() naudoti lengva, turėkite omenyje, kad dideliuose duomenų rėmuose jis gali neveikti efektyviai. Daugeliu atvejų, norint pasiekti geresnį našumą, galima naudoti kitas parinktis, pvz., apply() arba vektoriškai apskaičiuotus skaičiavimus.