Επιταχύνετε τον κωδικό Panda σας με μία μόνο αλλαγή

Επιταχύνετε τον κωδικό Panda σας με μία μόνο αλλαγή

September 30, 2022 0 Von admin

Αυτό το άρθρο δημοσιεύτηκε ως μέρος του Data Science Blogathon.

Εισαγωγή στα Πάντα

Το Pandas είναι μια βιβλιοθήκη python που δεν χρειάζεται συστάσεις. Τα Panda παρέχουν έναν ευκολότερο τρόπο για να κάνετε προεπεξεργασία και ανάλυση στο δικό μας. Ο κύριος λόγος για την επιβράδυνση είναι ότι τα panda δεν μπορούν να τρέξουν το πρόγραμμα παράλληλα και χρησιμοποιεί μόνο έναν πυρήνα CPU για την εκτέλεση του προγράμματος. Πρέπει να στραφούμε σε κατανεμημένες πλατφόρμες υπολογιστών όπως το Spark για εργασία σε μεγάλα δεδομένα. Αλλά η διατήρηση κατανεμημένων πλατφορμών υπολογιστών είναι q

Επιπλέον, απαιτείται μια απότομη καμπύλη μάθησης για τη χρήση κατανεμημένων υπολογιστικών πλατφορμών και είναι δύσκολο για αρχάριους να τις χρησιμοποιήσουν. Από εδώ προέρχεται το Modin. Κάνει τον κώδικα Pandas να εκτελείται παράλληλα αλλάζοντας μόνο μία γραμμή κώδικα.

Το Modin είναι μια βιβλιοθήκη ανοιχτού κώδικα που αναπτύχθηκε από το RISElab του UC Berkeley για να επιταχύνει τον υπολογισμό μέσω κατανεμητικής υπολογιστικής. Το Modin χρησιμοποιεί βιβλιοθήκες Ray/Dask στο backend για να παραλληλίσει τον κώδικα και επίσης δεν χρειαζόμαστε γνώσεις διανομής υπολογιστών για να χρησιμοποιήσουμε το Modin. Το Modin Dataframe έχει παρόμοιο API με το Pandas. Επομένως, το μόνο που έχουμε να κάνουμε είναι να συνεχίσουμε να χρησιμοποιούμε το Pandas API όπως ήταν πριν. Το Modin παρέχει επιτάχυνση έως και 4x σε φορητό υπολογιστή 4 πυρήνων. Το Modin μπορεί να χρησιμοποιηθεί για μέγεθος δεδομένων που κυμαίνεται από 1MB έως 1TB.

Εγκατάσταση

Το Modin μπορεί να εγκατασταθεί μέσω της εντολής pip και χρησιμοποιεί τη βιβλιοθήκη Ray/Dask ως backend. Το Modin θα ανιχνεύσει αυτόματα τον κινητήρα ray/dask στον υπολογιστή μας. Σε περίπτωση που η βιβλιοθήκη Ray/Dask δεν είναι προεγκατεστημένη στον υπολογιστή σας, το Modin μπορεί να εγκατασταθεί με τις εξαρτήσεις του με τις παρακάτω εντολές.

pip install "modin[ray]" # Install Modin dependencies and Ray to run on Ray
pip install "modin[dask]" # Install Modin dependencies and Dask to run on Dask
pip install "modin[all]" # Install all of the above

Αρχιτεκτονική Modin

Το διάγραμμα αρχιτεκτονικής υψηλού επιπέδου του Modin μπορεί να δοθεί παρακάτω

Αρχιτεκτονική Modin|  Πάντα

Επί του παρόντος, μπορούμε να χρησιμοποιήσουμε το Modin με το pandas API. Το SQLite API βρίσκεται σε πειραματική λειτουργία με το Modin. Στο μελλοντικό Modin, οι προγραμματιστές σχεδιάζουν να δημιουργήσουν ξεχωριστά API για το Modin, αλλά τίποτα τέτοιο δεν έχει αναπτυχθεί ακόμα. Το επίπεδο του Query Compiler που βρίσκεται κάτω από το επίπεδο API θα συνθέσει το ερώτημα και θα εκτελέσει ορισμένες βελτιστοποιήσεις με βάση τη μορφή των δεδομένων.

Το Modin θα εκτελείται με το Ray/Dask ως backend του. Μπορούμε επίσης να κάνουμε το Modin να λειτουργεί με τη δική μας βιβλιοθήκη backend, καθώς είναι μια βιβλιοθήκη ανοιχτού κώδικα και επίσης, παρόλο που μπορούμε να τρέξουμε το Modin απευθείας με python χωρίς το backend, δεν θα εξυπηρετήσει τον σκοπό μας, καθώς το Modin δεν μπορεί να εκτελέσει κώδικα παράλληλα. μόδα από μόνη της.

Modin Dataframe Architecture

Το πλαίσιο δεδομένων Modin είναι διαμερισμένο κατά μήκος και των δύο σειρών και στηλών και κάθε διαμέρισμα είναι ένα ξεχωριστό πλαίσιο δεδομένων pandas.

Modin Dataframe Architecture|  Πάντα

Μπορούμε να αλλάξουμε τα προεπιλεγμένα διαμερίσματα στο modin χρησιμοποιώντας τη μέθοδο repartition().

Εκτέλεση

Μπορούμε να αντικαταστήσουμε τα panda με modin με μία μόνο γραμμή κώδικα

import modin.pandas as pd

Σύγκριση Modin εναντίον Pandas pd.read_csv()

import modin.pandas as pd import time start_time=time.time() data_modin=pd.read_csv("../input/uwmgi-mask-dataset/train.csv") end_time=time.time() duration=end_time-start_time print("Time taken to run the code "+str(duration))

Time taken to run the code 0.4164540767669678

import pandas import time start_time=time.time() data_pandas=pandas.read_csv("../input/uwmgi-mask-dataset/train.csv") end_time=time.time() duration=end_time-start_time print("Time taken to run the code "+str(duration))

Time taken to run the code 0.6549224853515625

df.fillna()

%%time data_modin.fillna(0)

Χρόνοι CPU: χρήστης 7,68 ms, σύστημα: 5,06 ms, σύνολο: 12,7 ms Χρόνος τοίχου: 10,9 ms

%%time

data_pandas.fillna(0)

CPU times: user 59.2 ms, sys: 5.38 ms, total: 64.6 ms Wall time: 62.3 ms

Περιορισμοί

Το Pandas είναι μια βαριά βιβλιοθήκη με μια μεγάλη συλλογή από API. Παρόλο που το Modin υποστηρίζει δημοφιλή API των Panda, δεν θα υποστηρίζει όλα τα API των Panda.

Περιορισμοί|  Πάντα Για τις συναρτήσεις που δεν υλοποιούνται στο Modin, από προεπιλογή είναι αυτόματα τα panda. Έτσι, για τις συναρτήσεις που δεν υλοποιούνται στα panda και για τις συναρτήσεις που καθορίζονται από το χρήστη (εφαρμογή συναρτήσεων στα panda), το Modin θα μετατρέψει το Modin DataFrame σε Pandas DataFrame και στη συνέχεια θα εφαρμόσει αυτές τις συναρτήσεις. Θα υπάρξει κάποια ποινή απόδοσης για τη μετατροπή σε Pandas Dataframe.
Περιορισμοί Εικόνα 2|Πάντα

Σύγκριση με άλλες βιβλιοθήκες

Οι Dask, Vaex, Ray, Cudf και Koalas είναι μερικές από τις δημοφιλείς εναλλακτικές λύσεις για το Modin.

Βιβλιοθήκες όπως το Dask και το Koala προσπαθούν να επιλύσουν το πρόβλημα απόδοσης για μεγάλα σύνολα δεδομένων με τους δικούς τους τρόπους, αλλά δεν θα διατηρήσουν τη συμπεριφορά του Pandas API και πρέπει να κάνουμε σημαντικές αλλαγές στον κώδικα του panda για να τον κάνουμε να εκτελείται σε dask/Koalas. Επίσης, το Dask/Koalas υποστηρίζει μόνο διαχωρισμό σειρών, ενώ το Modin υποστηρίζει διαχωρισμό σειρών, στηλών και κελιών του πλαισίου δεδομένων που βοηθά το Modin να υποστηρίζει μια μεγάλη ποικιλία Pandas API. Λόγω του ελέγχου της κατάτμησης, το Modin υποστηρίζει μεθόδους των panda, όπως το transpose(). quantile(), και median() που είναι δύσκολο να εφαρμοστούν στο διαμέρισμα δεδομένων που βασίζεται σε γραμμές.

Σύγκριση με άλλες βιβλιοθήκες|  Πάντα

Ομοίως, βιβλιοθήκες όπως η Vaex έχουν σχεδιαστεί για οπτικοποίηση δεδομένων για μεγάλα σύνολα δεδομένων, αλλά όχι ως αντικατάσταση των πάντα. Επομένως, είναι καλύτερο να δοκιμάσετε το Vaex για οπτικοποίηση δεδομένων, αλλά για ευκολία υιοθέτησης και απόδοσης, το Modin ξεπερνά τη βιβλιοθήκη Vaex. Επίσης, δεν μπορούμε να συγκρίνουμε τις βιβλιοθήκες όπως η Ray/Cudf με τη Modin. Το Ray/Cudf δεν παρέχει κανένα API panda υψηλού επιπέδου. Το Ray/Cudf μπορεί να χρησιμοποιηθεί ως υποστήριξη υποστήριξης για το Modin για βέλτιστη απόδοση με λιγότερες αλλαγές κώδικα.

Επίσης, το Dask/Ray χρησιμοποιεί lazy αξιολόγηση που εκτελεί τον κώδικα μόνο όταν ο χρήστης αξιολογήσει ρητά το αποτέλεσμα. Παρόλο που η τεμπέλης αξιολόγηση μειώνει την πολυπλοκότητα του χρόνου, μερικές φορές αυξάνει την πολυπλοκότητα του χώρου. Σε αντίθεση με το Dask/Ray, το Modin από προεπιλογή δεν εκτελεί τεμπέλης αξιολόγηση. Αλλά ο Modin υποστηρίζει επίσης τεμπέλης αξιολόγηση με τον κινητήρα Omnisci.

Συμπέρασμα για τον κώδικα Pandas

Το Modin είναι ακόμα στα πρώτα του βήματα

Το βασικό σύνθημα του Modin είναι να κάνει τους χρήστες να χρησιμοποιούν τα ίδια εργαλεία για μικρά και μεγάλα σύνολα δεδομένων χωρίς να αλλάζουν τα API. Στο μέλλον, οι προγραμματιστές σχεδιάζουν να ενσωματώσουν το Modin με τις Pyarrow, Sqlite και διάφορες άλλες βιβλιοθήκες. Τα βασικά συμπεράσματα του άρθρου είναι

  1. Καταλάβαμε γιατί τα πάντα δεν είναι ιδανικά για μεγάλα δεδομένα και πώς το Modin μας βοηθάει στην αντιμετώπιση μεγάλων δεδομένων.
  2. Καταλάβαμε την αρχιτεκτονική του Modin.
  3. Μάθαμε πώς να εφαρμόσουμε το Modin σε python.
  4. Έχουμε περάσει τους περιορισμούς του Modin.
  5. Τέλος, συγκρίναμε το Modin με τις εναλλακτικές του και συζητήσαμε τα εγγενή πλεονεκτήματα του Modin σε σύγκριση με τις εναλλακτικές του.

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.