Come aumentare la velocità di Pandas e processare dataset di 10 milioni di righe in millisecondi
Aumentare velocità di Pandas e processare dataset di 10M righe in millisecondi
Usa Pandas nel modo in cui è stato pensato
Introduzione
“Fantastico… un altro articolo su come rendere Pandas n volte più veloce”.
Credo di averlo detto innumerevoli volte negli ultimi tre anni in cui ho usato Pandas. L’ultimo che ho visto diceva “rendi Pandas 71.803 volte più veloce”.
Ma non ti farò una promessa del genere. Ti mostrerò solo come utilizzare Pandas nel modo più veloce possibile. Perché non puoi velocizzare qualcosa che già è veloce.
Ha senso, no?
- Creare grafici con Matplotlib e Seaborn
- Come iniziare e far crescere un podcast con l’IA
- Pattern di Ingegneria del Software per Machine Learning
Ti faccio una domanda. Con quale mano tocchi l’orecchio destro quando dico “Tocca il tuo orecchio destro”. Ovviamente, con la mano destra. Non toccheresti l’orecchio destro mettendo la mano sinistra sopra la testa. Sarebbe strano.
Bene, utilizzare le funzioni che nella documentazione di Pandas sono esplicitamente indicate come lente invece dei metodi più veloci sarebbe altrettanto strano.
Ecco perché questo articolo ti mostrerà le migliori pratiche per alcune delle operazioni di manipolazione dei dati più comuni in Pandas. Puoi persino considerare queste migliori pratiche come “buon senso”, perché è così che gli sviluppatori di Pandas hanno pensato che la loro libreria dovesse essere utilizzata.
Indicizzazione efficiente
Iniziamo con le operazioni più basilari. In particolare, vedremo il modo più veloce per selezionare righe e colonne. Come sai, ci sono due operatori di indicizzazione – loc
e iloc
in Pandas. Anche se la loro differenza non conta molto per i dataset di piccole dimensioni, diventerà piuttosto evidente man mano che la dimensione dei dati aumenta.
Innanzitutto, per scegliere una riga o più righe, iloc
è più veloce.
Al contrario, loc
è migliore per scegliere colonne con le loro etichette:
>>> tps.loc[:, ["f1", "f2", "f3"]]
Per campionare colonne o righe, la funzione integrata sample
è la più veloce. Potresti pensare di campionare utilizzando indici casuali con NumPy…