Python è forse il lin­guag­gio di pro­gram­ma­zio­ne più usato per lo sviluppo di sta­ti­sti­che e per l’in­tel­li­gen­za ar­ti­fi­cia­le. Non stupisce quindi sapere che presenta numerosi metodi e moduli che sem­pli­fi­ca­no no­te­vol­men­te l’analisi dei dati. Di seguito il­lu­stria­mo il fun­zio­na­men­to del metodo mean, pro­get­ta­to per calcolare il valore medio di una serie di numeri.

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

Sintassi e fun­zio­na­men­to

Il fun­zio­na­men­to del metodo mean è facile da spiegare: mean di Python prende una serie di numeri e ne re­sti­tui­sce 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 il­lu­stria­mo la sintassi e il fun­zio­na­men­to di questo metodo.

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
Python

Come mostrato nell’esempio, il metodo opera esat­ta­men­te come descritto: l’output cor­ri­spon­de alla media della lista di numeri iniziale. Il risultato è sempre un numero in virgola mobile, come evi­den­zia­to nell’esempio np.mean([1, 3, 2]). No­no­stan­te 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 pre­ce­den­za.

Inoltre, in questo esempio è possibile notare due dettagli im­por­tan­ti relativi al metodo mean. Il primo riguarda la pre­ci­sio­ne dei numeri in virgola mobile, mentre il secondo riguarda l’utilizzo del modulo numpy.

Rap­pre­sen­ta­zio­ne dei numeri in virgola mobile

Ef­fet­tuan­do ma­nual­men­te il secondo calcolo dell’esempio, si otterrà un risultato di 1,88. Tuttavia, il programma non re­sti­tui­rà lo stesso valore. Questo com­por­ta­men­to può essere at­tri­bui­to alla rap­pre­sen­ta­zio­ne dei numeri in virgola mobile nel sistema binario su cui si basano tutti i moderni computer. Proprio come nel sistema decimale con­ven­zio­na­le, esistono alcuni numeri fra­zio­na­ri che nel sistema binario non possono essere rap­pre­sen­ta­ti con esattezza. Prendiamo ad esempio il numero 0,3333 del sistema decimale. Possiamo sempre ag­giun­ge­re un 3 in più, ma non otterremo mai un terzo esatto.

Anche se questo problema è ine­vi­ta­bi­le, i numeri in virgola mobile risultano suf­fi­cien­te­men­te accurati da non creare grandi problemi nella maggior parte dei casi. Cio­no­no­stan­te, è im­por­tan­te sapere che, quando si lavora con essi, i numeri in virgola mobile possono portare a delle im­pre­ci­sio­ni.

Il modulo numpy

Come evi­den­zia­to nell’esempio pre­ce­den­te, è im­por­tan­te notare che il metodo mean non fa parte della libreria standard di Python. Per poter uti­liz­za­re questo metodo, è ne­ces­sa­rio im­por­tar­lo da un modulo esterno, come ad esempio numpy o statistics. Potrebbe dover essere ne­ces­sa­rio in­stal­la­re tali moduli, ma una volta com­ple­ta­ta questa ope­ra­zio­ne, è possibile in­clu­der­li fa­cil­men­te all’interno del proprio programma. Ti basterà ag­giun­ge­re questa riga di codice all’inizio del programma: import numpy. Se in futuro desideri fare ri­fe­ri­men­to al modulo con un nome dif­fe­ren­te, puoi usare il comando import numpy as x, dove x rap­pre­sen­te­rà il nome che avrai scelto per il modulo.

Consiglio

Desideri pub­bli­ca­re la tua ap­pli­ca­zio­ne web in modo facile e rapido usando Git? Allora Deploy Now di IONOS è la soluzione perfetta per te!

Al­ter­na­ti­ve a mean di Python

Come già accennato, il metodo mean non ap­par­tie­ne alla libreria standard di Python, ma a moduli esterni come numpy, che dovrai prima importare. Tuttavia, se questo non dovesse essere possibile, potrai im­ple­men­ta­re il metodo mean in un altro modo. A tal proposito è suf­fi­cien­te scrivere poche righe di codice:

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

I metodi sum e len uti­liz­za­ti nell’esempio sopra sono già presenti nella libreria standard di Python e possono quindi essere ri­chia­ma­ti senza bisogno di im­por­tar­li pre­ce­den­te­men­te. Come si può vedere nell’esempio qui sotto, tale soluzione funziona esat­ta­men­te come mean della libreria numpy.

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
Python
N.B.

Oltre a metodi come mean, anche gli operatori Python svolgono un ruolo fon­da­men­ta­le nell’ela­bo­ra­zio­ne di record di dati. Nel nostro articolo dedicato a questo argomento, ti spie­ghia­mo come funziona ciascun operatore e ti il­lu­stria­mo quali pos­si­bi­li­tà offre.

Esempi per uti­liz­za­re Python mean

Per con­clu­de­re il­lu­stre­re­mo alcuni casi d’uso del metodo mean. Nel programma qui sotto, l’utente viene invitato a inserire ri­pe­tu­ta­men­te un numero. Questo valore viene con­ver­ti­to da string a integer e aggiunto a una lista. Il valore medio degli elementi in questa lista viene co­stan­te­men­te ag­gior­na­to e re­sti­tui­to ogni qualvolta viene inserito un nuovo valore.

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

Nell’esempio suc­ces­si­vo ci sono tre persone, ognuna con una coor­di­na­ta x, y e z. Il metodo mean viene uti­liz­za­to per calcolare il centro delle tre persone.

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]
Python
Vai al menu prin­ci­pa­le