Utilizzo di Python per la gestione dei dati: esplorazione delle librerie Pandas e Pymongo
Tags: pandas, pymongo, python
Published: 2023-10-24 07:05:37




Python si è affermato come uno dei linguaggi di programmazione più popolari nel mondo, essendo particolarmente efficace nel settore della data science e del trattamento dei dati. Due delle sue librerie più utilizzate in questo ambito sono Pandas e Pymongo. In questo post vedremo qualche esempio d'uso di queste potenti librerie per importare e lavorare con dati da varie fonti.


## Gestione dei dati CSV con Pandas

Pandas è la libreria di Python per l'importazione e la manipolazione dei dati all'interno di un DataFrame. Un DataFrame è una struttura simile a una tabella con righe ordinate e nominate, chiamate indici del DataFrame.
Il metodo read_csv è spesso usato per importare dati da un file csv. Esso permette di configurare diverse opzioni come il delimitatore, il qualificatore, la riga dell'intestazione, quelle da skippare, i formati delle date e dei numeri. Ecco un esempio di codice.

`import pandas as pd
clienti = pd.read_csv(filepath_or_buffer = "Fatture.csv",
                      sep = ";", 
                      header = 0,
                      decimal=',')`

In particolare abbiamo configurato:
- il nome del file "Fatture.csv";
- il carattere separatore (il punto e virgola ";");
- la posizione della riga di intestazione (0 corrisponde alla prima);
- il separatore delle cifre decimali (la virgola ",").

In maniera simile, ci sono altri metodi per importare dati da altre fonti che organizzano i dati in tabelle, come Excel e i database SQL.
{% embed https://www.youtube.com/watch?v=Q4xAuvhN7sI&t=7s %}


## Gestione dei dati JSON con Pandas

Il formato JSON è largamente usato come formato di interscambio. Pandas fornisce:
- il metodo read_json per importare direttamente dati da file in formato JSON
- il metodo json_normalize per creare un Dataframe a partire da una variabile di tipo dizionario. 

Risulta importante osservare che a prescindere del formato iniziale (json, excel o csv) l'output sarà sempre un DataFrame. Questo è molto comodo per uniformare i dati importati in una struttura comune, che poi può essere lavorata in modo uniforme. Qui in particolare trovi degli [esercizi sull'analisi dei dati](https://www.yimp.it/esercizi-python-con-soluzioni-pandas-e-analisi-dei-dati/). D'altro lato però, potrebbe generare qualche difficoltà nella gestione delle chiavi JSON più complesse.


## Gestione dei dati con Pymongo
Pymongo è una libreria Python utilizzata per connettersi e interagire con i database NoSQL di MongoDb. Ecco il codice per connettersi ad un database locale installato a soli fini di test o esercizio personale.


`from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")`

In generale, è importante rispettare gli standard di sicurezza aziendali quando crei la connessione. Come minimo, dovresti evitare di scrivere direttamente nel codice l'username e la password.

Dopo, puoi connetterti a un database MongoDb e usare le funzioni offerte da Pymongo per gestire i dati. Con questo codice, ad esempio, salvi nella variabile _result _le fatture con tipologia "A".

`db = client.DatabaseMongoDB
result = db.fatture.find({"tipologia":{$eq:"A"}});`

La variabile _result _è un array di pymongo. Applicando il metodo _next _possiamo lavorare il contenuto del cursore "un documento alla volta"
`document = result.next()`

A questo punto posso utilizzare tutte le funzionalità dei dizionari di Python. Ad esempio con questo codice

`document["id_fattura"]`

estraggo la chiave _id_fattura _del documento. 

Possiamo lavorare con i cursori anche tramite cicli for

`for document in result:
    print(document)`


Oltre a leggere i dati, hai anche la possibilità di inserire, aggiornare o eliminare documenti dal database, ed eseguire query più complesse di aggregazione dei dati.