Le e-mail di ENRON
Posso estrarre informazioni interessanti da un set di dati, anche se ho a disposizione soltanto risorse ridotte? È questa la domanda che si pongono in molti, soprattutto da quando l'analisi dei dati - complice anche la vasta diffusione della buzz word "big data" - è sempre più oggetto di attenzione.
In alcuni casi la risposta è sicuramente affermativa e si possono ottenere deduzioni in modo rapido, ricorrendo a strumenti semplici e di facile reperibilità. Questo nonostante circoli l'idea errata che vede solo gli esperti del settore capaci di interventi significativi, coadiuvati da software sofisticatissimi e, soprattutto, costosissimi.
Avvertenza
Nel seguito uso il sistema operativo Linux, sfruttandone alcuni strumenti a linea di comando. Anche se non sei un utente di Linux, potrai comunque comprendere i passi che ho compiuto via via per estrarre alcune interessanti informazioni dal set di dati.
Ci tengo anche a precisare che, per analizzare dati occorre una consolidata esperienza del settore analizzato, per evitare di riscoprire l'acqua calda o giungere a conclusioni fuorvianti.
La storia di ENRON, in poche parole
Primo passo: reperire l'archivio di email ENRON
Ricordiamoci che si tratta di un archivio che negli anni ha perduto molta della sua autenticità: alcuni ex dipendenti ENRON, infatti, hanno chiesto e ottenuto che l'archivio fosse modificato per eliminare, per esempio, i riferimenti ad aspetti personali delle loro vite. Nonostante siano state apportate modifiche, l'archivio conserva comunque un suo dignitoso valore didattico. E poi la nostra intenzione è di allenarci con l'analisi dei dati, non di scoprire le tresche all'interno di un'azienda andata in malora.
Secondo passo: dotarsi di strumenti per una prima analisi
Conteggi di controllo
La versione in mio possesso dell'archivio ENRON dichiara di contenere [...] 517404 messaggi di email, suddivisi nei folder di 150 ex dipendenti di ENRON. find . -maxdepth 2 -type d | wc -l che restituisce 152 come risultato. Considerando che find, nell'esplorare l'albero delle directory, include sia quella dalla quale abbiamo lanciato il comando che la figlia, contenente tutti i folder dei dipendenti ENRON dei quali abbiamo i messaggi, il conto conferma [...] Mediante il comando find . -type f | wc -l contiamo i file presenti nell'albero. Vediamo in dettaglio [...] find .: "trova, a partire dalla directory attuale..." -type f: "... i soli file..." | wc: "... e mentre lo fai, contali." Il risultato è 517404 cioè proprio quanto ci aspettavamo. Due file di supporto per le prime indagini Creiamo adesso un paio di file che ci serviranno per ricavare alcune prime interessanti informazioni. Chiameremo Date_e_orari.txt il file che, come è chiaro dal nome, conterrà i riferimenti temporali relativi all'invio di ogni messaggio. Lo creiamo col seguente comando: find . -type f -exec sh -c "head -2 {} | tail -1" \; > Date_e_orari.txt Chiameremo Mittenti.txt il file con gli indirizzi email del mittente di ogni messaggio. Lo creiamo col seguente comando: find . -type f -exec sh -c "head -3 {} | tail -1" \; > Mittenti.txtLa settimana media
Vediamo ora di analizzare i flussi di email, a seconda dei giorni della settimana. Mediante la serie di comandi grep -i Mon Date_e_orari.txt | wc grep -i Tue Date_e_orari.txt | wc grep -i Wed Date_e_orari.txt | wc grep -i Thu Date_e_orari.txt | wc grep -i Fri Date_e_orari.txt | wc grep -i Sat Date_e_orari.txt | wc grep -i Sun Date_e_orari.txt | wc otteniamo i seguenti risultati: Monday: 101127 Tuesday: 106425 Wednesday: 106510 Thursday: 96054 Friday: 86370 Saturday: 7112 Sunday: 13804 Numero di e-mail inviate, per giorni della settimana Una distribuzione secondo le aspettative Una conferma a quanto si sa: le probabilità che una email sia inviata diminuiscono con l'avvicinarsi del weekend, durante il quale, fra l'altro, l'attività è ridotta al minimo. La figura qui accanto mostra la distribuzione del numero di e-mail cumulativamente inviate, per ogni giorno della settimana.