pandas DataFrame yinelemeye giriş

Verimli Python Kodu Yazmak

Logan Thomas

Scientific Software Technical Trainer, Enthought

pandas tekrarı

  • Intermediate Python içinde pandas özeti
  • Veri analizi için kullanılan kütüphane
  • Ana veri yapısı: DataFrame
    • Etiketli satır ve sütunlu tablo verisi
    • NumPy dizi yapısının üzerine kurulu
  • Bölüm hedefi:
    • Bir pandas DataFrame’i üzerinde yineleme için en iyi uygulamalar
Verimli Python Kodu Yazmak

Beyzbol istatistikleri

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
Verimli Python Kodu Yazmak

Beyzbol istatistikleri

  Team
0  ARI     
1  ATL     
2  BAL     
3  BOS     
4  CHC

alt=”ARI yazısının altında Arizona Diamondbacks logosu, ATL yazısının altında Atlanta Braves logosu, BAL yazısının altında Baltimore Orioles logosu, BOS yazısının altında Boston Red Sox logosu ve CHC yazısının altında Chicago Cubs logosu”

Verimli Python Kodu Yazmak

Beyzbol istatistikleri

  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
Verimli Python Kodu Yazmak

Kazanma yüzdesini hesaplama

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
Verimli Python Kodu Yazmak

Kazanma yüzdesini DataFrame’e ekleme

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
Verimli Python Kodu Yazmak

Kazanma yüzdesini DataFrame’e ekleme

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
Verimli Python Kodu Yazmak

.iloc ile yineleme

%%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 döngü başına (7 çalıştırmanın ortalaması ± std. sapma, her biri 10 döngü)
Verimli Python Kodu Yazmak

.iterrows() ile yineleme

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
Verimli Python Kodu Yazmak

.iterrows() ile yineleme

%%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 döngü başına (7 çalıştırmanın ortalaması ± std. sapma, her biri 10 döngü)
Verimli Python Kodu Yazmak

.iterrows() ile DataFrame yinelemeyi pratiğe dökelim

Verimli Python Kodu Yazmak

Preparing Video For Download...