Introducción a la iteración de DataFrame en pandas

Cómo escribir código Python eficiente

Logan Thomas

Scientific Software Technical Trainer, Enthought

Resumen de pandas

  • Revisa pandas en Python intermedio
  • Librería para análisis de datos
  • Estructura principal: DataFrame
    • Datos tabulares con filas y columnas con etiquetas
    • Basado en arrays de NumPy
  • Objetivo del capítulo:
    • Mejores prácticas para iterar un DataFrame de pandas
Cómo escribir código Python eficiente

Estadísticas de béisbol

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
Cómo escribir código Python eficiente

Estadísticas de béisbol

  Team
0  ARI     
1  ATL     
2  BAL     
3  BOS     
4  CHC

alt=”Logotipo de Arizona Diamondbacks con el texto ARI debajo, logotipo de Atlanta Braves con el texto ATL debajo, logotipo de Baltimore Orioles con el texto BAL debajo, logotipo de Boston Red Sox con BOS debajo y logotipo de Chicago Cubs con CHC debajo”

Cómo escribir código Python eficiente

Estadísticas de béisbol

  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
Cómo escribir código Python eficiente

Calcular porcentaje de victorias

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
Cómo escribir código Python eficiente

Añadir porcentaje de victorias al 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
Cómo escribir código Python eficiente

Añadir porcentaje de victorias al 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
Cómo escribir código Python eficiente

Iterar con .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 por bucle (media ± des. típ. de 7 ejecuciones, 10 bucles cada una)
Cómo escribir código Python eficiente

Iterar con .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
Cómo escribir código Python eficiente

Iterar con .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 por bucle (media ± des. típ. de 7 ejecuciones, 10 bucles cada una)
Cómo escribir código Python eficiente

Practica la iteración de DataFrame con .iterrows()

Cómo escribir código Python eficiente

Preparing Video For Download...