Pengantar iterasi DataFrame pandas

Menulis Kode Python yang Efisien

Logan Thomas

Scientific Software Technical Trainer, Enthought

Ringkasan pandas

  • Lihat ringkasan pandas di Intermediate Python
  • Pustaka untuk analisis data
  • Struktur data utama adalah DataFrame
    • Data tabular dengan baris dan kolom berlabel
    • Dibangun di atas array NumPy
  • Tujuan bab:
    • Praktik terbaik untuk iterasi DataFrame pandas
Menulis Kode Python yang Efisien

Statistik 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
Menulis Kode Python yang Efisien

Statistik baseball

  Team
0  ARI     
1  ATL     
2  BAL     
3  BOS     
4  CHC

alt=”Logo Arizona Diamondbacks dengan teks ARI di bawahnya, logo Atlanta Braves dengan teks ATL di bawahnya, logo Baltimore Orioles dengan teks BAL di bawahnya, logo Boston Red Sox dengan teks BOS di bawahnya, dan logo Chicago Cubs dengan teks CHC di bawahnya”

Menulis Kode Python yang Efisien

Statistik 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
Menulis Kode Python yang Efisien

Menghitung persentase kemenangan

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
Menulis Kode Python yang Efisien

Menambahkan persentase kemenangan ke 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
Menulis Kode Python yang Efisien

Menambahkan persentase kemenangan ke 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
Menulis Kode Python yang Efisien

Iterasi dengan .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)
Menulis Kode Python yang Efisien

Iterasi dengan .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
Menulis Kode Python yang Efisien

Iterasi dengan .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)
Menulis Kode Python yang Efisien

Latihan iterasi DataFrame dengan .iterrows()

Menulis Kode Python yang Efisien

Preparing Video For Download...