Nel corso dell’ultimo decennio e con l’esplosione dei Big Data, sempre più aziende si sono evolute trasformandosi in Data-Driven Company (DDC), ossia aziende guidate dai dati e in grado di prendere decisioni sulla base di fatti oggettivi.
Sono proprio i dati e la relativa analisi, che ne permette un uso efficace, ad essere ormai al centro dei processi decisionali delle DDC, permettendo a CEO, manager, e responsabili di progetto di prendere scelte più oculate e basate su dati corretti, freschi e rilevati con una frequenza che prima non era possibile. Sono, in effetti, molteplici gli esempi di applicazione pratica che sottolineano l’importanza dell’analisi dei dati e tra essi abbiamo:
- le attività di manutenzione predittiva in tempo reale;
- l’analisi delle transazioni finanziarie per il rilevamento di frodi;
- le ben note attività di marketing, in cui l’analisi comportamentale dei propri utenti è alla base dei processi decisionali aziendali per la definizione e il lancio di nuovi prodotti o il miglioramento di quelli esistenti.
Per rendere tutto ciò possibile, tuttavia, è stato necessario definire nuove figure tecniche in grado di:
- analizzare i dati;
- modellizzare problemi complessi tramite approcci matematico-statistici e tecniche di intelligenza artificiale;
- interpretare i risultati ottenuti e trasmetterli al fine di supportare le scelte di business.
È proprio in questo decennio che sono diventate sempre più importanti e fondamentali le figure del Data Scientist, del Data Analyst e del Machine Learning (ML) Engineer. Figure professionali che sfruttano linguaggi di programmazione, come Python e R, per poter:
- raccogliere e organizzare una grande mole di dati;
- compiere le proprie analisi;
- creare modelli di ML e Deep Learning (DL) sulla base dei dati analizzati e puliti da rumore o dati spuri.
Il proliferare di queste nuove figure e la necessità di analizzare grandi moli di dati ha dato così vita ad un nuovo settore tecnologico in cui sono stati definiti e creati framework, tool, e prodotti fondamentali per i processi decisionali.
Sistemi di archiviazione dati come Apache Parquet, Hadoop, Cassandra e MongoDB sono ormai alla base dei sistemi di analisi dati che sfruttano framework come Spark e librerie come Dask, Pandas e NumPy per poter:
- esplorare i dataset;
- generare statiche e metriche da monitorare e usare per le attività e i processi delle DDC.
In particolare, l’esigenza di avere delle pipeline di data science e ML integrate con servizi web su larga scala ha fatto sì che Python diventasse il principale linguaggio di programmazione impiegato dalle DDC, facendone accrescere allo stesso tempo l’ecosistema di librerie, framework e prodotti opensource.
Tra le principali librerie offerte dall’ecosistema di Python e utilizzate per l’esplorazione dei dati, il calcolo di metriche e la costruzione di modelli ritroviamo ad esempio
Libreria | Descrizione |
---|---|
NumPy | è la principale libreria offerta dall’ecosistema di Python per il calcolo scientifico |
Pandas | è una libreria per la manipolazione e l'analisi dei dati tramite strutture dati ottimizzate. Questa libreria dipende e interagisce con NumPy |
Matplotlib | è la libreria per la creazione di grafici in Python |
Seaborn | costruita su Matplotlb, questa libreria offre una varietà di pattern per la visualizzazione dei dati |
Scikit learn | è una delle principali librerie per la realizzazione di modelli di ML |
In questa guida introdurremo NumPy (ossia Numerical Python).
Creata nel 2005 da Travis Oliphant sulla base Numeric di Jim Hugunin, NumPy è poi diventata la principale libreria di calcolo scientifico e uno dei cardini principali del pacchetto SciPy, una libreria open source utilizzata per la risoluzione di problemi matematici, elaborazione immagini e molto altro.
NumPy fornisce una vasta libreria matematica in grado di eseguire calcoli numerici in modo efficace ed efficiente. In particolare, questa libreria offre numerosi vantaggi rispetto al semplice utilizzo di Python tra cui:
- la definizione della struttura dati nd-array, che permette la creazione di liste, matrici o tensori per effettuare calcoli matematici;
- l’archiviazione efficiente dei dati attraverso un utilizzo ottimizzato della memoria per la gestione degli nd-array e notevolmente inferiore rispetto agli array definiti in Python;
- la possibilità di specificare diversi tipi di dati per gli nd-array tra cui anche tipi di dati arbitrari che consentono a Numpy di integrarsi facilmente e rapidamente con un'ampia varietà di database;
- strumenti per l'integrazione di codice C / C ++ e Fortran;
- la definizione di un ampio insieme di funzioni ottimizzate per operazioni aritmetiche, algebra lineare, elaborazione numerica;
- la definizione di funzioni ottimizzate di ricerca e ordinamento dei dati;
- una più semplice gestione ed elaborazione delle date;
- la capacità di NumPy di gestire al meglio nd-array di diverse dimensioni durante le operazioni matematiche.
Nel corso di questa guida vedremo come installare NumPy e focalizzeremo la nostra attenzione su:
- i tipi di dati principali offerti;
- e principali operazioni di manipolazione degli nd-array e matematiche;
- l broadcasting;
- e principali operazioni statistiche;
- icerca e ordinamento dei dati.
Il codice delle lezioni di questa guida saranno disponibili su Github al seguente repository e in formato IPython per poter essere aperti e modificati tramite Jupyter notebook o Google Colab (di cui abbiamo già parlato qui).