PROGRAMMAZIONE PYTHON
Come ispezionare i frame di dati Panda in operazioni concatenate senza suddividere la catena in istruzioni separate
Il debugging è il cuore della programmazione. Ho scritto di questo nel seguente articolo:
Questa affermazione è abbastanza generale e indipendente dal linguaggio e dal contesto. Quando usi Python per l’analisi dei dati, devi eseguire il debug del codice indipendentemente dal fatto che tu stia conducendo analisi di dati complesse, scrivendo un prodotto software ML o creando un’app Streamlit o Django.
Questo articolo illustra il debug del codice Panda, o meglio uno scenario specifico di debug del codice Panda in cui le operazioni sono concatenate in una pipe. Tale debugging pone un problema impegnativo. Quando non sai come farlo, le operazioni Panda concatenate sembrano essere molto più difficili da eseguire il debug rispetto al codice Panda normale, ovvero le singole operazioni Panda che utilizzano l’assegnazione tipica con parentesi quadre.
Per eseguire il debug del normale codice Panda utilizzando l’assegnazione tipica con parentesi quadre, è sufficiente aggiungere un punto di interruzione Python e utilizzare il comando pdb
debugger interattivo. Sarebbe qualcosa del genere:
>>> d = pd.DataFrame(dict(
... x=(1, 2, 2, 3, 4),
... y=(.2, .34, 2.3, .11, .101),
... group=("a", "a", "b", "b", "b")
.. ))
>>> d("xy") = d.x + d.y
>>> breakpoint()
>>> d = d(d.group == "a")
Sfortunatamente, non puoi farlo quando il codice è costituito da operazioni concatenate, come qui:
>>> d = d.assign(xy=lambda df: df.x + df.y).query("group == 'a'")
oppure, a seconda delle vostre preferenze, qui:
>>> d = d.assign(xy=d.x + d.y).query("group == 'a'")
In questo caso, non c’è nessun posto dove fermarsi a guardare il codice: puoi farlo solo prima o dopo la catena. Pertanto, una delle soluzioni è spezzare la catena principale in due sottocatene (due tubi) in un…
Fonte: towardsdatascience.com