Vectorisation sur des séries pandas

Rédiger du code efficace avec pandas

Leonidas Souliotis

PhD Candidate

DataFrames comme tableaux

Logo GitHub

Rédiger du code efficace avec pandas

Comment effectuer la vectorisation avec pandas

start_time = time.time()
poker[['R1', 'R2', 'R3', 'R4', 'R5']].sum(axis=1)
print("Time using pandas vectorization: {} sec".format(time.time() - start_time))
Temps avec la vectorisation pandas : 0.0026819705 s
poker[['R1', 'R2', 'R3', 'R4', 'R5']].sum(axis=1).head()
|              |    | 
|--------------|----| 
| 0            | 47 | 
| 1            | 47 | 
| 2            | 47 | 
| 3            | 47 | 
| 4            | 47 | 
| dtype: int64 | -- |
Rédiger du code efficace avec pandas

Comparaison avec les méthodes précédentes

data_generator = data.iterrows()

start_time = time.time()
for index, value in data_generator:
        sum([value[1], value[3], value[5], value[7]])
print("Time using .iterrows(){} seconds" % (time.time() - start_time))
Résultats de l'opération ci-dessus calculés en 3.37918996 secondes
start_time = time.time()
data[['R1', 'R2', 'R3', 'R4', 'R5']].apply(lambda x: sum(x),axis=1)
print("Results from the above operation calculated in %s seconds" % (time.time() - start_time))
Résultats de l'opération ci-dessus calculés en 0.637711048 seconde
- Écart entre la vectorisation et la fonction `.iterows()` : 111 800,75 %
- Écart entre la vectorisation et la fonction `.apply()` : 20 853 %
Rédiger du code efficace avec pandas

Passons à la pratique !

Rédiger du code efficace avec pandas

Preparing Video For Download...