Je veux trouver la moyenne et l'écart type des 1er, 2ème, ... chiffres de plusieurs listes (Z). Par exemple, j'ai
A_rank=[0.8,0.4,1.2,3.7,2.6,5.8]
B_rank=[0.1,2.8,3.7,2.6,5,3.4]
C_Rank=[1.2,3.4,0.5,0.1,2.5,6.1]
# etc (up to Z_rank )...
Maintenant , je veux prendre la moyenne et std de *_Rank[0]
la moyenne et de std *_Rank[1]
, etc.
(ex: moyenne et std du 1er chiffre de tous les (A..Z) listes _rank,
la moyenne et std du 2ème chiffre de toutes les listes (A..Z) _rank;
la moyenne et la norme du 3ème chiffre ...; etc).
python
list
standard-deviation
physics_for_all
la source
la source
Réponses:
Depuis Python 3.4 / PEP450, il existe un
statistics module
dans la bibliothèque standard, qui a une méthodestdev
pour calculer l'écart type des itérables comme le vôtre:la source
pstddev
devrait probablement être utilisé à la place si votre liste représente la population entière (c'est-à-dire que la liste n'est pas un échantillon d'une population).stddev
est calculé à l'aide de la variance de l'échantillon et surestimera la moyenne de la population.stdev
etpstdev
, ne pas utiliserstd
pourstandard
comme on pouvait s'y attendre. Je n'ai pas pu modifier le message car les modifications doivent modifier au moins 6 caractères ...Je mettrais
A_Rank
et al dans un tableau NumPy 2D , puis utiliseraisnumpy.mean()
etnumpy.std()
pour calculer les moyennes et les écarts types:la source
STDEV.P()
et la fonction Numpystd(ddof=0)
calculent la population sd, ou l' échantillon non corrigé sd, tandis que la fonction ExcelSTDEV.S()
et la fonction Numpystd(ddof=1)
calculent l' échantillon (corrigé) sd, qui équivaut à sqrt (N / (N-1) ) fois la population sd, où N est le nombre de points. Voir plus: en.m.wikipedia.org/wiki/…Voici du code pur Python que vous pouvez utiliser pour calculer la moyenne et l'écart type.
Tout le code ci-dessous est basé sur le
statistics
module en Python 3.4+.Remarque: pour une précision améliorée lors de la sommation des flottants, le
statistics
module utilise une fonction personnalisée_sum
plutôt que celle intégréesum
que j'ai utilisée à sa place.Maintenant, nous avons par exemple:
la source
pvar=ss/(n-1)
?n-1
. Le code ci-dessus est pour la population SD (il y a donc desn
degrés de liberté).stddev
fonction afin qu'elle puisse calculer les écarts types de l'échantillon et de la population.Dans Python 2.7.1, vous pouvez calculer l'écart type en utilisant
numpy.std()
pour:numpy.std()
sans argument supplémentaire en plus de votre liste de données.Il calcule l'échantillon std plutôt que population std.
la source
En python 2.7, vous pouvez utiliser NumPy's pour
numpy.std()
donner l' écart type de la population .Dans Python 3.4
statistics.stdev()
renvoie l'exemple d'écart type. Lapstdv()
fonction est la même quenumpy.std()
.la source
En utilisant python, voici quelques méthodes:
Approach1 - utilisation d'une fonction
Approche2: calculer la variance et en prendre la racine carrée
Approche 3: utiliser les mathématiques de base
Remarque:
variance
calcule la variance de l'échantillon de populationpvariance
calcule la variance de la population entièrestdev
etpstdev
la source
code python pur:
la source
sqrt(sum((x - mean)**2 for x in lst) / len(lst))
Les autres réponses couvrent suffisamment comment faire du développement std en python, mais personne n'explique comment faire la traversée bizarre que vous avez décrite.
Je vais supposer que AZ est la population entière. Sinon, voyez la réponse d' Ome sur la façon de déduire à partir d'un échantillon.
Donc, pour obtenir l'écart type / la moyenne du premier chiffre de chaque liste, vous auriez besoin de quelque chose comme ceci:
Pour raccourcir le code et le généraliser à n'importe quel nième chiffre, utilisez la fonction suivante que j'ai générée pour vous:
Maintenant, vous pouvez simplement obtenir le stdd et la moyenne de tous les nièmes endroits de A à Z comme ceci:
la source
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")