Questo articolo è il primo di una serie di tre dedicata alla scoperta del linguaggio di programmazione Python. Non perdiamo tempo e cominciamo!
Lezioni di programmazione
Python è un linguaggio di programmazione
Un linguaggio di programmazione è innanzitutto un linguaggio. Gli uomini utilizzano il linguaggio per scambiarsi informazioni, per trasferire da una persona a un'altra contenuti significativi (dotati cioè di un significato). Un linguaggio di programmazione serve allo stesso scopo, solo che in questo caso almeno uno degli interlocutori è un calcolatore. Un linguaggio di programmazione serve essenzialmente per dire a un calcolatore che cosa deve fare, quali operazioni deve svolgere.
I linguaggi di programmazione sono diversi dai linguaggi umani
A differenza degli esseri umani, i calcolatori non hanno normalmente la capacità di comprendere tutte le sfumature e anche le ambiguità tipiche di un linguaggio naturale. Un testo scritto in lingua italiana o in qualsiasi altra lingua umana (in attesa di comprendere il linguaggio delle balene) può contenere molti significati sottintesi, molte sfumature, può essere spesso interpretato in molti modi diversi (pensiamo per esempio alla poesia) e può essere anche volutamente incomprensibile, o fuorviante.
I linguaggi di programmazione sono completamente diversi: sono molto più semplici di un linguaggio naturale; hanno meno regole ma queste regole sono molto più rigide. Non possono essere ambigui, non possono contenere sfumature o sottintesi, e decisamente non sono adatti alla poesia (anche se possono essere eleganti: Python per esempio è considerato un linguaggio elegante).
Scrivere un programma significa generalmente scrivere una sequenza di istruzioni utilizzando un determinato linguaggio
Python è un linguaggio interpretato
Esistono due categorie di linguaggi di programmazione: compilati e interpretati. In realtà esistono molte categorie diverse di linguaggi, ma in linea di massima ogni linguaggio di programmazione è compilato oppure interpretato.
- I programmatori che usano un linguaggio compilato lavorano in questo modo: scrivono un file di testo che contiene le istruzioni del programma, dopodiché convertono le istruzioni in un file eseguibile utilizzando un software chiamato compilatore. Esempi di linguaggi compilati sono C, C++ e (seppure con delle differenze rispetto ai primi due) Java.
- I programmatori che usano un linguaggio interpretato lavorano in modo diverso: scrivono un file di testo che contiene le istruzioni del programma (e fin qui tutto come sopra); dopodiché però non producono un file eseguibile: il file di testo che contiene le istruzioni del programma viene letto da un software chiamato interprete dei comandi e che esegue le singole istruzioni contenute nel file di testo sul momento. I più famosi linguaggi interpretati sono Python e Javascript.
È meglio utilizzare un linguaggio compilato o intepretato?
Dipende: esistono pregi e difetti dell'approccio compilato e dell'approccio interpretato.
- I linguaggi compilati offrono generalmente migliori prestazioni (i programmi che si ottengono sono più veloci) e sicurezza, ma richiedono in genere tempi di sviluppo più lunghi.
- I linguaggi interpretati sono più flessibili e permettono un rapido sviluppo e debug, ma possono essere meno efficienti in termini di esecuzione (i programmi che si ottengono sono più lenti).
Ed eccoci a Python!
Python presenta al meglio tutti i vantaggi di un linguaggio interpretato: semplice nella sintassi, flessibile, rapido da usare, offre una quantità sterminata di funzionalità pronte da usare, tanto da essere chiamato IL COLTELLINO SVIZZERO DEI LINGUAGGI DI PROGRAMMAZIONE.
In questo tutorial e nei due successivi vengono e verranno presentati tre esempi di utilizzo di Python in tre ambiti molto diversi: il machine learning, l'office automation, lo sviluppo di applicazioni web. Cercheremo di mostrare concretamente che Python permette di realizzare velocemente applicazioni utili in contesti molto diversi tra loro.
Installare l'interprete dei comandi Python
Per poter programmare in Python è necessario installare sul proprio calcolatore un interprete dei comandi. Esistono diversi interpreti dei comandi Python: il più famoso è CPython, che deve il suo nome al fatto di essere scritto in C (è quindi un programma compilato) ed è l'interprete ufficiale sviluppato dalla Python Software Foundation.
Installare CPython su Windows
Per installare CPython su Windows potete eseguire questi passaggi:
- Scaricare l'installer Andate sul sito ufficiale di Python e scaricate l'installer per Windows.
- Eseguire l'installer Eseguite il file .exe scaricato.
- Configurare le opzioni di installazione
- Assicuratevi di selezionare l'opzione Add Python to PATH.
- Selezionate Install Now per utilizzare le impostazioni predefinite o Customize installation per configurare le opzioni avanzate.
- Attendere il completamento Lasciate che il processo di installazione termini. Potrebbe richiedere qualche minuto.
- Verificare l'installazione Aprite il prompt dei comandi e digitate
python --version
per verificare che Python sia stato installato correttamente.
Installare CPython su Linux (Debian)
Per installare CPython su Linux (ci riferiamo qui alla distribuzione Debian o ad altre distribuzioni basate su Debian) potete eseguire questi passaggi:
- Aggiornare l'elenco dei pacchetti Aprite il terminale e eseguite
sudo apt update
.
- Installare Python Eseguite il comando
sudo apt install python3
.
- Verificare l'installazione Digitate
python3 --version
nel terminale per assicurarsi che Python sia stato installato correttamente.
- Installare pip Per installare pip, il gestore di pacchetti per Python, eseguite
sudo apt install python3-pip
.
- Verificare pip Digitate
pip3 --version
per confermare che pip è stato installato correttamente.
Hello world in Python
Siamo pronti a eseguire il nostro primo programma in Python!
- Aprire un editor di testo Aprite un editor di testo a vostra scelta (va bene anche Blocco Note; se invece volte un consiglio potete utilizzare Notepad++).
- Scrivere il codice Nel vostro editor di testo, digitate il seguente codice:
print("Hello, World!")
- Salvare il file Salvate il file con il nome hello.py. Assicuratevi di salvare il file con estensione .py, che indica che si tratta di un file Python.
- Aprire il terminale Aprite il terminale o il prompt dei comandi.
- Su Windows, potete aprire il Prompt dei comandi cercando cmd nel menu Start.
- Su macOS e Linux, potete aprire il Terminale cercandolo nel menù delle applicazioni.
- Navigare fino alla directory del file Utilizzate il comando cd (change directory) per spostarvi nella directory in cui avete salvato il file hello.py. Per esempio, se avete salvato il file nella cartella Documenti, potete digitare:
cd Documents
.
- Eseguire il programma Una volta nella directory corretta, eseguite il programma digitando:
python hello.py
. In alcuni casi il comando da digitare potrebbe essere questo: python3 hello.py
.
- Visualizzare il risultato Dopo aver eseguito il comando, dovreste vedere l'output seguente nel terminale:
Hello, World!
.
Funziona! Avete appena eseguito con successo il vostro primo programma in Python!
Esempi di utilizzo pratico
In questo post mostriamo un primo esempio di utilizzo del linguaggio Python, relativo al mondo del Machine Learning. Nelle prossime puntate mostreremo altri esempi realativi ad ambiti diversi (in particolare la Office Automation e la realizzazione di applicazioni per il Web).
Regressione lineare
La regressione lineare è una tecnica statistica utilizzata per comprendere e modellare la relazione tra due grandezze (dette variabili). Immaginiamo di aver raccolto un insieme di dati che rappresentano l'altezza e il peso di diverse persone. La regressione lineare aiuta a trovare una relazione tra queste due variabili, permettendoci di fare una previsione del peso di una persona partendo dalla sua altezza.
Il risultato della regressione lineare è una linea retta che passa attraverso i dati. Questa linea cerca di avvicinarsi il più possibile a tutti i punti nel grafico che rappresentano i dati, minimizzando la distanza tra i punti effettivi (i dati misurati) e quelli sulla linea (le previsioni).
La pendenza della retta indica la direzione e la forza della relazione tra le variabili. Se la pendenza è positiva, significa che all'aumentare dell'altezza, anche il peso tende ad aumentare. Se è negativa, all'aumentare dell'altezza, il peso tende a diminuire.
La regressione lineare è utile perché fornisce una semplice equazione che possiamo usare per fare previsioni. Ad esempio, se conosciamo l'altezza di una persona, possiamo usare l'equazione per prevedere il suo peso. Questa tecnica è ampiamente utilizzata in vari campi, come l'economia, la biologia, l'ingegneria e le scienze sociali, per analizzare e interpretare le relazioni tra variabili e fare previsioni basate su dati storici.
Python permette di realizzare facilmente modelli di regressione lineare, utilizzando per esempio librerie di funzioni predefinite (nel nostro caso pandas, matplotlib, scikit-learn).
Ecco uno script che effettua la regressione lineare altezza-peso partendo dai dati misurati da 30 persone.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Dati di esempio: altezze e pesi di 30 persone
altezze = [174., 168., 176., 185., 167.,
167., 185., 177., 165., 175.,
165., 165., 172., 150., 152.,
164., 159., 173., 160., 155.,
184., 167., 170., 155., 164.,
171., 158., 173., 163., 167.]
pesi = [84.4, 93.5, 88.1, 87.3, 87.9, 77.7,
93.9, 79.0, 76.0, 88.6, 86.3, 83.5,
85.6, 73.9, 68.9, 78.5, 77.6, 91.8,
82.1, 69.1, 93.9, 81.9, 81.9, 80.9,
87.4, 90.2, 75.0, 85.3, 83.6, 88.4]
# Creiamo un DataFrame per visualizzare i dati generati
# Un DataFrame è una struttura dati tabellare bidimensionale
# con etichette per righe e colonne
dati = pd.DataFrame({
'Altezza (cm)': altezze,
'Peso (kg)': pesi
})
# Definiamo la variabile indipendente (X) e la variabile dipendente (y)
# Vogliamo poter prevedere il peso in conoscendo l'altezza
X = dati[['Altezza (cm)']]
y = dati['Peso (kg)']
# Creiamo un modello di regressione lineare
# Questo modello è definito nella libreria scikit-learn
model = LinearRegression()
# Alleniamo il modello con i dati disponibili
# Cioè, cerchiamo di trovare la retta di regressione che meglio approssima i dati
# minimizzando la differenza tra i valori predetti e i valori reali
model.fit(X, y)
# Otteniamo i parametri della retta di regressione: pendenza (coef_) e intercetta (intercept_)
m = model.coef_[0] # Pendenza
b = model.intercept_ # Intercetta
print(f"Equazione della retta di regressione: y = {m:.2f}x + {b:.2f}")
# Calcoliamo le previsioni di peso partendo dalle altezze di input
# per tracciare la retta di regressione
y_pred = model.predict(X)
# Visualizziamo i dati originali e la retta di regressione
# La libreria matplotlib permette di creare grafici e visualizzazioni
plt.scatter(X, y, color='blue', label='Dati misurati') # Dati misurati
plt.plot(X, y_pred, color='red', label='Retta di regressione') # Retta di regressione
plt.xlabel('Altezza (cm)')
plt.ylabel('Peso (kg)')
plt.title('Regressione Lineare: Peso in funzione dell\'Altezza')
plt.legend()
plt.show()
Ecco il risultato dell'esecuzione:
Equazione della retta di regressione: y = 0.55x + -8.69
La rappresentazione grafica è mostrata in figura.
Come vedete, con poche righe di codice siamo stati in grado di realizzare un'analisi di regressione lineare su un (piccolo) dataset. Questo è solo un piccolo esempio di come Python possa aiutarci nello svolgimento di compiti più o meno semplici nel campo dell'analisi dei dati.
Nei prossimi articoli di questa serie affronteremo altri esempi.
A presto! ^__^