Μια αποτελεσματική προσωπική ροή εργασίας για την επιστήμη των δεδομένων Jupyter – Win Vector LLC

Μια αποτελεσματική προσωπική ροή εργασίας για την επιστήμη των δεδομένων Jupyter – Win Vector LLC

März 5, 2023 0 Von admin

Θα ήθελα να μοιραστώ αυτό που βρήκα ότι είναι μια πολύ αποτελεσματική προσωπική ροή εργασίας Jupyter για την ανάπτυξη της επιστήμης δεδομένων.


DALL E 2022 08 20 14 51 57 An Effective Personal Jupyter Data Scienceflow Workflow

DALL-E «Μια αποτελεσματική προσωπική ροή εργασίας για την επιστήμη των δεδομένων Jupyter»

Jupyter Τα βιβλία εργασίας (nee IPython) είναι έγγραφα JSON που επιτρέπουν σε έναν επιστήμονα δεδομένων να συνδυάζει: κώδικα, σήμανση, αποτελέσματα, εικόνες και γραφήματα. Αποτελούν μεγάλη συμβολή στην επιστημονική αναπαραγωγιμότητα, καθώς μπορούν να περιέχουν μια σειρά από βήματα που μπορούν να επαναληφθούν όλα σε παρτίδες. Διαδραματίζουν παρόμοιο ρόλο με τον εγγράμματο προγραμματισμό, το SWEAVE και το rmarkdown/knitr. Η κύρια διαφορά σχεδιασμού είναι ότι οι φορητοί υπολογιστές Jupyter δεν διαχωρίζουν τις προδιαγραφές από την παρουσίαση, γεγονός που προκαλεί μια σειρά από σημεία τριβής. Δεν είναι ευανάγνωστα χωρίς εργαλείο (όπως JupyterLab, Jupyter Notebook, Visual Studio Code, PyCharm ή άλλα IDE), είναι αρκετά ασύμβατα με τον έλεγχο προέλευσης (καθώς μπορεί να περιέχουν εικόνες ως δυαδικές σταγόνες και πολλά από τα εργαλεία αλλάζουν το σημειωματάριο στο άνοιγμα), και κάνουν grepη αναζήτηση/αναζήτηση δύσκολη.

Τα παραπάνω θέματα είναι ευτυχώς όλα απαραίτητες δυσκολίες. Η Python είναι ένα περιβάλλον εργασίας πολύ προσανατολισμένο στον κώδικα, επομένως τα περισσότερα εργαλεία εκθέτουν μια συνοπτική προγραμματιζόμενη διεπαφή. Τα εργαλεία που εκτίθενται από τα πακέτα Python IPython, nbformatκαι nbconvert είναι πολύ δυνατά και βολικά. Μόνο με λίγο κώδικα οργάνωσης μπόρεσα να δημιουργήσω μια πολύ ισχυρή ροή εργασιών επιστήμης προσωπικών δεδομένων που έχω διαπιστώσει ότι λειτουργεί πολύ καλά για τους πελάτες.

Μοιράζομαι αυτή τη μικρή ποσότητα κώδικα στο πακέτο wvpy. Αυτό είναι πιο εύκολο να αποδειχθεί σε δράση, τόσο σε αυτό το άρθρο όσο και σε μια επίδειξη βίντεο εδώ.

Το πρώτο χαρακτηριστικό είναι: η μετατροπή φορητών υπολογιστών Jupyter (τα οποία είναι αρχεία JSON που τελειώνουν με α .ipynb επίθημα) προς και από απλό κώδικα Python που είναι πιο συμβατός με τον έλεγχο πηγής (όπως το Git).

Ας ξεκινήσουμε με ένα απλό παράδειγμα σημειωματάριου Jupyter: plot.ipynb. Εάν εγκαταστήσουμε (χρησιμοποιώντας ένα κέλυφος όπως bask ή zsh) wvpy από την PyPi.

pip install wvpy

Και κατεβάζουμε plot.ipynb

wget https://raw.githubusercontent.com/WinVector/wvpy/main/examples/worksheets/plot.ipynb

Στη συνέχεια, μπορούμε να μετατρέψουμε το σημειωματάριο Jupyter στο μορφοποιημένο αρχείο Python ως εξής (συζητάμε αυτήν τη μορφή λίγο εδώ).

python -m wvpy.pysheet --delete plot.ipynb

Το εργαλείο αναφέρει τα βήματα που κάνει στη μετατροπή.

from "plot.ipynb" to "plot.py"
   copying previous output target "plot.py" to "plot.py~"
   converting Jupyter notebook "plot.ipynb" to Python "plot.py"
   moving input plot.ipynb to plot.ipynb~

Εμφανίζεται το αρχείο Python που προκύπτει εδώ. Η ιδέα είναι: ολόκληρο το αρχείο είναι καθαρό Python, με τα μη python μπλοκ σε συμβολοσειρές πολλών γραμμών. Αυτό το αρχείο έχει αφαιρεθεί όλα τα αποτελέσματα και τα μεταδεδομένα, καθώς και ένα μικρό ποσό κανονικοποίησης κενού χώρου. Αυτή η μορφή „.py“ είναι ακριβώς η σωστή μορφή για έλεγχο πηγής, έχουμε αξιόπιστες και ευανάγνωστες διαφορές. Στην προσωπική μου πρακτική, δεν ελέγχω τα αρχεία „.ipynb“ στον έλεγχο προέλευσης, αλλά μόνο τα αντίστοιχα αρχεία „.py“. Αυτή η πειθαρχία κάνει grepΗ αναζήτηση και η αναζήτηση στοιχείων στο έργο είναι τόσο εύκολη όσο η εύρεση στοιχείων στον κώδικα.

Στο αρχείο „.py“ οι δείκτες „κείμενο έναρξης“, „κείμενο τέλους“ και „κώδικας τέλους“ δείχνουν πού βρίσκονται τα όρια κελιών του Jupyter. Αυτό επιτρέπει την αξιόπιστη μετατροπή από το αρχείο „.py“ σε φορητό υπολογιστή Jupyter. Το PyCharm και άλλοι έχουν παρόμοια στρατηγική αναπαράστασης σημειωματάριων.

Μπορούμε να μετατρέψουμε ξανά από „.py“ σε „.ipynb“ ως εξής.

python -m wvpy.pysheet --delete plot
from "plot.py" to "plot.ipynb"
   converting Python plot.py to Jupyter notebook plot.ipynb
   moving input plot.py to plot.py~

Σημειώστε ότι αυτή τη φορά δεν καθορίσαμε το επίθημα αρχείου (το „.py“ ή „.ipynb“). Το εργαλείο ελέγχει αν υπάρχει ακριβώς ένα από αυτά και μετατρέπει το ένα στο άλλο. Αυτό επιτρέπει την εύκολη μετατροπή εμπρός και πίσω με επαναχρησιμοποίηση του ιστορικού εντολών.

Οποιαδήποτε μορφή του φύλλου εργασίας μπορεί να εκτελεστεί και να αποδοθεί με HTML από τη γραμμή εντολών ως εξής.

python -m wvpy.render_workbook plot
start render_as_html "plot.ipynb"  2022-08-20 12:19:06.669369
    done render_as_html "plot.html" 2022-08-20 12:19:10.080226

Αυτό παράγει αυτό που περιμένουμε να δούμε από ένα σημειωματάριο Jupyter ως παρουσίαση.

Στιγμιότυπο οθόνης 2022 08 20 στις 12 45 27 μ.μ.

Υπάρχει επίσης μια επιλογή στο πρόγραμμα απόδοσης HTML που αφαιρεί μπλοκ εισόδου. Αυτή η παρουσίαση δεν είναι πλήρως έτοιμη, αλλά κάνει πολύ καλές αναφορές εργασιών προόδου.

python -m wvpy.render_workbook --strip_input plot
start render_as_html "plot.ipynb"  2022-08-20 12:19:35.251560
    done render_as_html "plot.html" 2022-08-20 12:19:38.478107

Αυτό δίνει μια απλοποιημένη έξοδο όπως παρακάτω.

Στιγμιότυπο οθόνης 2022 08 20 στις 12 43 40 μ.μ.

Για φύλλα που έχουν ήδη εκτελεστεί, κάποιος θα χρησιμοποιήσει την τυπική εντολή Juypter που παρέχεται „jupyter nbconvert --to html plot.ipynb„, το πλεονέκτημα της απόδοσης εδώ είναι η παραμετροποίηση των σημειωματάριων και η απομάκρυνση των αναγνωριστικών εισόδου και προτροπής. Η στρατηγική εδώ είναι να είναι ελαφρύ αυτόνομο και όχι βύσμα όπως η στρατηγική που ακολουθεί jupytext ή nbdevή στόχευση πλήρως έτοιμων αναφορών μέσω κάμερας Τέταρτο σχήμα βιβλίου. νιώθω το wvpy Η προσέγγιση μεγιστοποιεί την παραγωγικότητα κατά την ανάπτυξη, με ελάχιστες επιβαρύνσεις προσθήκης και εγκατάστασης.

Παρέχουμε επίσης α απλή κλάση JTask για την εκτέλεση εργασιών απόδοσης, συμπεριλαμβανομένης της εισαγωγής αυθαίρετου κώδικα αρχικοποίησης για κάθε εκτέλεση. Αυτό καθιστά πολύ εύκολη την απόδοση του ίδιου βιβλίου εργασίας Jupyter για διαφορετικούς στόχους (ας πούμε την ίδια ανάλυση για κάθε πόλη σε μια πολιτεία) και ακόμη και τον παραλληλισμό της απόδοσης χρησιμοποιώντας τυπικά εργαλεία Python όπως π.χ. multiprocessing.Pool. Αυτή η παραμετροποιημένη λειτουργία επιτρέπει την απλή διαχείριση αρκετά μεγάλων έργων. Εάν χρειάζεται να εκτελέσω πολλές παραλλαγές ενός σημειωματάριου, χρησιμοποιώ το Δοχείο JTask και είτε έναν βρόχο for είτε multiprocessing.Pool πάνω από τις εργασίες στην Python (θυμηθείτε, όταν έχουμε Python δεν χρειάζεται να εκτελούμε όλα τα βήματα στο GUI ή ακόμα και σε ένα κέλυφος!). Βρίσκεται ένα μικρό παράδειγμα της μεθόδου εδώόπου ένα μόνο σημειωματάριο Jupyter ParamExample.ipynb χρησιμοποιείται από run_examples.py για την παραγωγή των πολλαπλών αρχείων HTML, PDF και PNG ανά ημερομηνία που βρίσκονται στο Ευρετήριο.

Βρήκα ότι η πιο γρήγορη ροή εργασιών ανάπτυξης είναι να δουλέψω με τους φορητούς υπολογιστές Jupyter „.ipynb“ (συνήθως στον κώδικα του Visual Studio και να ρυθμίσω τυχόν τιμές που υποτίθεται ότι προέρχονται από το wvpy.render_workbook με το χέρι μετά τον έλεγχο δεν έχουν τοποθετηθεί globals()). Στη συνέχεια, όταν το φύλλο εργασίας λειτουργεί, το μετατρέπω σε „.py“ χρησιμοποιώντας wvpy.pysheet και ελέγξτε το στον έλεγχο πηγής.

Ως δευτερεύουσα σημείωση βρίσκω ότι η Python είναι μια κοινότητα για πρώτη φορά προγραμματιστές, κάτι που είναι πολύ αναζωογονητικό. Οι δυνατότητες (όπως το Jupyter, το nbconvert και το nbformat) απελευθερώνονται ως κώδικας με γενναιόδωρες άδειες και τεκμηρίωση ανοιχτού κώδικα αντί να παγιδεύονται σε μονολιθικές εφαρμογές. Αυτό σημαίνει ότι μπορεί κανείς να εκμεταλλευτεί τις δυνατότητές τους χρησιμοποιώντας μόνο ένα μικρό ποσό κώδικα. Και με την αναφερόμενη υπόθεση ότι η Python είναι μια κοινότητα για πρώτη φορά προγραμματιστή, μικρές ποσότητες κώδικα θεωρούνται εύκολες ενσωματώσεις. Το wvpy προσφέρεται στο ίδιο πνεύμα, είναι διαθέσιμο για χρήση από το PyPi εδώ βάσει άδειας BSD 3 ρητρών και έχει τον κωδικό της διαθέσιμο εδώ για επαναχρησιμοποίηση ή προσαρμογή εδώ με την ίδια άδεια. Δεν είναι ένα μεγάλο έργο, αλλά με έχει κάνει λίγο πιο εύκολη την εργασία σε έργα πελατών και τη διδασκαλία της επιστήμης δεδομένων.

Συμπερασματικά, αυτή είναι η τρέχουσα προσωπική μου ροή εργασίας Jupyter. Βελτιώνει τη συμβατότητα με τον έλεγχο πηγής, την ευκολία αναζήτησης και την αυτόματη απόδοση πολλών φύλλων εργασίας με παραμετροποιημένο τρόπο. Πιστεύω ότι αυτό αντιμετωπίζει τα κύρια σημεία πόνου της εργασίας με φύλλα εργασίας Jupyter.

Θα προσφέρω ιδιωτική (και ελπίζω κάποια μέρα δημόσια) εκπαίδευση σχετικά με τη ροή εργασίας (συμπεριλαμβανομένης της παραμετροποίησης του σημειωματάριου για την εκτέλεση πολλών εργασιών από μία μόνο πηγή, χρήση του multiprocessing.Pool για επιτάχυνση και IPython.display.display; IPython.display.Markdown για προσαρμοσμένα αποτελέσματα) στο μέλλον.

Κατηγορίες: Συναρπαστικές Τεχνικές Γνώμες σεμινάρια

Με ετικέτα: επιστήμη δεδομένων iPython Jupyter pydata python

John Mount