Introduction à l'itération DataFrame dans pandas

Écrire du code Python efficace

Logan Thomas

Scientific Software Technical Trainer, Enthought

Récapitulatif sur pandas

  • Découvrez pandas dans Python intermédiaire
  • Bibliothèque utilisée pour l'analyse des données
  • La structure de données principale est le DataFrame
    • Données tabulaires avec lignes et colonnes étiquetées
    • Développé à partir de la structure de tableau NumPy
  • Objectif du chapitre :
    • Meilleures pratiques pour itérer sur un DataFrame pandas
Écrire du code Python efficace

Statistiques de baseball

import pandas as pd

baseball_df = pd.read_csv('baseball_stats.csv')
print(baseball_df.head())
  Team League  Year   RS   RA   W    G  Playoffs
0  ARI     NL  2012  734  688  81  162         0
1  ATL     NL  2012  700  600  94  162         1
2  BAL     AL  2012  712  705  93  162         1
3  BOS     AL  2012  734  806  69  162         0
4  CHC     NL  2012  613  759  61  162         0
Écrire du code Python efficace

Statistiques de baseball

  Team
0  ARI     
1  ATL     
2  BAL     
3  BOS     
4  CHC

alt=”Arizona Diamondbacks logo with text ARI underneath, Atlanta Braves logo with text ATL underneath, Baltimore Orioles logo with text BAL underneath, Boston Red Sox logo with BOS underneath, and Chicago Cubs logo with CHC underneath”

Écrire du code Python efficace

Statistiques de baseball

  Team League  Year   RS   RA   W    G  Playoffs
0  ARI     NL  2012  734  688  81  162         0
1  ATL     NL  2012  700  600  94  162         1
2  BAL     AL  2012  712  705  93  162         1
3  BOS     AL  2012  734  806  69  162         0
4  CHC     NL  2012  613  759  61  162         0
Écrire du code Python efficace

Calcul du pourcentage de victoires

import numpy as np

def calc_win_perc(wins, games_played):

    win_perc = wins / games_played

    return np.round(win_perc,2)
win_perc = calc_win_perc(50, 100)
print(win_perc)
0.5
Écrire du code Python efficace

Ajouter le pourcentage de victoires au DataFrame

win_perc_list = []

for i in range(len(baseball_df)): row = baseball_df.iloc[i]
wins = row['W'] games_played = row['G']
win_perc = calc_win_perc(wins, games_played)
win_perc_list.append(win_perc)
baseball_df['WP'] = win_perc_list
Écrire du code Python efficace

Ajouter le pourcentage de victoires au DataFrame

print(baseball_df.head())
  Team League  Year   RS   RA   W    G  Playoffs    WP
0  ARI     NL  2012  734  688  81  162         0  0.50
1  ATL     NL  2012  700  600  94  162         1  0.58
2  BAL     AL  2012  712  705  93  162         1  0.57
3  BOS     AL  2012  734  806  69  162         0  0.43
4  CHC     NL  2012  613  759  61  162         0  0.38
Écrire du code Python efficace

Itération avec .iloc

%%timeit
win_perc_list = []

for i in range(len(baseball_df)):
    row = baseball_df.iloc[i]

    wins = row['W']
    games_played = row['G']

    win_perc = calc_win_perc(wins, games_played)
    win_perc_list.append(win_perc)

baseball_df['WP'] = win_perc_list
183 ms ± 1.73 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Écrire du code Python efficace

Itération avec .iterrows()

win_perc_list = []

for i,row in baseball_df.iterrows():

wins = row['W'] games_played = row['G'] win_perc = calc_win_perc(wins, games_played) win_perc_list.append(win_perc) baseball_df['WP'] = win_perc_list
Écrire du code Python efficace

Itération avec .iterrows()

%%timeit
win_perc_list = []

for i,row in baseball_df.iterrows():

    wins = row['W']
    games_played = row['G']

    win_perc = calc_win_perc(wins, games_played)
    win_perc_list.append(win_perc)

baseball_df['WP'] = win_perc_list
95.3 ms ± 3.57 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Écrire du code Python efficace

Veuillez vous entraîner à itérer un DataFrame à l'aide de .iterrows()

Écrire du code Python efficace

Preparing Video For Download...