# Python mean: come trovare la media di elementi di una lista

Python è forse il linguaggio di programmazione più usato per lo sviluppo di statistiche e per l’intelligenza artificiale. Non stupisce quindi sapere che presenta numerosi metodi e moduli che semplificano notevolmente l’analisi dei dati. Di seguito illustriamo il funzionamento del metodo mean, progettato per calcolare il valore medio di una serie di numeri.

## Python mean in breve: cosa può fare questo metodo?

### Sintassi e funzionamento

Il funzionamento del metodo mean è facile da spiegare: mean di Python **prende una serie di numeri e ne restituisce il valore medio**. Per fare in modo che questo accada, i numeri devono essere riassunti in una lista che viene passata come singolo argomento. La lista può contenere sia numeri interi che numeri in virgola mobile. Il risultato del calcolo viene sempre espresso con un numero in virgola mobile. Nell’esempio qui sotto illustriamo la sintassi e il funzionamento di questo metodo.

```Python
import numpy as np
x = np.mean([1, 3, 2])
numeri = [1, 1.3, 4, 2.1, 1.0]
y = np.mean(numeri)
print(x)     # risultato: 2,0
print(y)     # risultato: 1,8800000000000001
```

Come mostrato nell’esempio, il metodo opera esattamente come descritto: l’output corrisponde alla media della lista di numeri iniziale. Il risultato è sempre un numero in virgola mobile, come evidenziato nell’esempio np.mean(\[1, 3, 2\]). Nonostante la media di questi numeri sia il numero esatto 2, la cifra mostrata è comunque “2,0”. Dall’esempio risulta inoltre evidente che l’elenco può essere scritto per intero o sotto forma di variabile, che sarà stata definita in precedenza.

Inoltre, in questo esempio è possibile notare due dettagli importanti relativi al metodo mean. Il primo riguarda la precisione dei numeri in virgola mobile, mentre il secondo riguarda l’utilizzo del modulo `numpy`.

### Rappresentazione dei numeri in virgola mobile

Effettuando manualmente il secondo calcolo dell’esempio, si otterrà un risultato di 1,88. Tuttavia, il programma non restituirà lo stesso valore. Questo comportamento può essere attribuito alla rappresentazione dei numeri in virgola mobile nel sistema binario su cui si basano tutti i moderni computer. Proprio come nel sistema decimale convenzionale, **esistono alcuni numeri frazionari che nel sistema binario non possono essere rappresentati con esattezza**. Prendiamo ad esempio il numero 0,3333 del sistema decimale. Possiamo sempre aggiungere un 3 in più, ma non otterremo mai un terzo esatto.

Anche se questo problema è inevitabile, i numeri in virgola mobile risultano sufficientemente accurati **da non creare grandi problemi nella maggior parte dei casi**. Ciononostante, è importante sapere che, quando si lavora con essi, i numeri in virgola mobile possono portare a delle imprecisioni.

### Il modulo numpy

Come evidenziato nell’esempio precedente, è importante notare che il **metodo mean *non* fa parte della libreria standard di Python**. Per poter utilizzare questo metodo, è necessario importarlo da un modulo esterno, come ad esempio `numpy` o `statistics`. Potrebbe dover essere necessario installare tali moduli, ma una volta completata questa operazione, è possibile includerli facilmente all’interno del proprio programma. Ti basterà aggiungere questa riga di codice all’inizio del programma: `import numpy`. Se in futuro desideri fare riferimento al modulo con un nome differente, puoi usare il comando `import numpy as x`, dove `x` rappresenterà il nome che avrai scelto per il modulo.

Consiglio Desideri pubblicare la tua applicazione web in modo facile e rapido usando Git? Allora [Deploy Now](https://www.ionos.it/hosting/deploy-now "Deploy Now di IONOS") di IONOS è la soluzione perfetta per te!

## Alternative a mean di Python

Come già accennato, il metodo mean non appartiene alla libreria standard di Python, ma a moduli esterni come `numpy`, che dovrai prima importare. Tuttavia, se questo non dovesse essere possibile, potrai implementare il **metodo mean in un altro modo**. A tal proposito è sufficiente scrivere poche righe di codice:

```Python
def mean(numeri):
    return sum(numeri)/len(numeri)
```

I metodi `sum` e `len` utilizzati nell’esempio sopra sono già presenti nella libreria standard di Python e possono quindi essere richiamati senza bisogno di importarli precedentemente. Come si può vedere nell’esempio qui sotto, tale soluzione funziona esattamente come `mean` della libreria `numpy`.

```Python
def mean(numeri):
    return sum(numeri)/len(numeri)
x = mean([1, 3, 2])
numeri = [1, 1.3, 4, 2.1, 1.0]
y = mean(numeri)
print(x)    # risultato: 2,0
print(y)    # risultato: 1,8800000000000001
```

N.B. Oltre a metodi come `mean`, anche gli [operatori Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/operatori-python/) svolgono un ruolo fondamentale nell’elaborazione di record di dati. Nel nostro articolo dedicato a questo argomento, ti spieghiamo come funziona ciascun operatore e ti illustriamo quali possibilità offre.

## Esempi per utilizzare Python mean

Per concludere illustreremo alcuni casi d’uso del metodo mean. Nel programma qui sotto, l’utente viene invitato a inserire ripetutamente un numero. Questo valore viene convertito da string a integer e aggiunto a una lista. Il valore medio degli elementi in questa lista viene costantemente aggiornato e restituito ogni qualvolta viene inserito un nuovo valore.

```Python
import numpy as np
lista = []
while(True):
    liste.append(int(input('Aggiungi numero alla lista: ')))
    print(np.mean(lista))
```

Nell’esempio successivo ci sono tre persone, ognuna con una coordinata x, y e z. Il metodo mean viene utilizzato per calcolare il centro delle tre persone.

```Python
import numpy as np
# Coordinate x, y e z di 3 persone:
persona1 = [1.5, 6.0, 4.2]
persona2 = [10.0, 9.0, 7.7]
persona3 = [15.5, 0.0, -5.0]
Persone = [persona1, persona2, persona3]
Posizionemedia = []
i = 0
while(i < len(persona1)):
    temp = []
    per x in persone:
        temp.append(x[i])
    posizionemedia.append(np.mean(temp))
    i = i + 1
print(posizione media)     #Risultato: [9.0, 5.0, 2.3000000000000003]
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-mean/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-mean/) for AI/LLM consumption.