Introducere în iterarea DataFrame pandas

Scriere eficientă a codului Python

Logan Thomas

Scientific Software Technical Trainer, Enthought

Recapitulare pandas

  • Prezentare generală pandas în Intermediate Python
  • Bibliotecă pentru analiza datelor
  • Structura principală de date este DataFrame
    • Date tabulare cu rânduri și coloane etichetate
    • Construită pe baza structurii array NumPy
  • Obiectivul capitolului:
    • Bune practici pentru iterarea unui DataFrame pandas
Scriere eficientă a codului Python

Statistici 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
Scriere eficientă a codului Python

Statistici baseball

  Team
0  ARI     
1  ATL     
2  BAL     
3  BOS     
4  CHC

alt="Sigla Arizona Diamondbacks cu textul ARI dedesubt, sigla Atlanta Braves cu textul ATL dedesubt, sigla Baltimore Orioles cu textul BAL dedesubt, sigla Boston Red Sox cu BOS dedesubt și sigla Chicago Cubs cu CHC dedesubt"

Scriere eficientă a codului Python

Statistici 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
Scriere eficientă a codului Python

Calcularea procentului de victorii

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
Scriere eficientă a codului Python

Adăugarea procentului de victorii în 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
Scriere eficientă a codului Python

Adăugarea procentului de victorii în 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
Scriere eficientă a codului Python

Iterare cu .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)
Scriere eficientă a codului Python

Iterare cu .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
Scriere eficientă a codului Python

Iterare cu .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)
Scriere eficientă a codului Python

Exersați iterarea DataFrame cu .iterrows()

Scriere eficientă a codului Python

Preparing Video For Download...