Quiero encontrar la desviación estándar y media del primer, segundo, ... dígitos de varias listas (Z). Por ejemplo, tengo
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 )...
Ahora quiero tomar la media y estándar de *_Rank[0], la media y estándar de *_Rank[1], etc.
(es decir: media y estándar del primer dígito de todas las listas (A..Z) _rank;
la media y estándar del segundo dígito de todas las listas (A..Z) _rank;
la media y estándar del tercer dígito ...; etc.).
python
list
standard-deviation
física_para_todos
fuente
fuente

Respuestas:
Desde Python 3.4 / PEP450 hay un
statistics moduleen la biblioteca estándar, que tiene un métodostdevpara calcular la desviación estándar de iterables como el suyo:fuente
pstddevprobablemente debería usarse en su lugar si su lista representa a toda la población (es decir, la lista no es una muestra de una población).stddevse calcula utilizando la varianza de la muestra y sobrestimará la media de la población.stdevypstdevno se usanstdparastandardcomo cabría esperar. No pude editar la publicación ya que las ediciones deben modificar al menos 6 caracteres ...Pondría
A_Ranket al en una matriz 2D NumPy , y luego usaríanumpy.mean()ynumpy.std()para calcular las medias y las desviaciones estándar:fuente
STDEV.P()y la función Numpystd(ddof=0)calculan la sd de la población , o la sd de la muestra sin corregir , mientras que la función de ExcelSTDEV.S()y la función Numpystd(ddof=1)calculan la sd de la muestra (corregida) , que es igual a sqrt (N / (N-1) ) multiplicado por la población sd, donde N es el número de puntos. Ver más: en.m.wikipedia.org/wiki/…Aquí hay un código de Python puro que puede usar para calcular la desviación estándar y media.
Todo el código siguiente se basa en el
statisticsmódulo en Python 3.4+.Nota: para mejorar la precisión al sumar flotantes, el
statisticsmódulo usa una función personalizada en_sumlugar de la incorporadasumque he usado en su lugar.Ahora tenemos por ejemplo:
fuente
pvar=ss/(n-1)?n-1. El código anterior es para la población SD (por lo que hayngrados de libertad).stddevfunción para que pueda calcular las desviaciones estándar de la muestra y la población.En Python 2.7.1, puede calcular la desviación estándar usando
numpy.std()para:numpy.std()sin argumentos adicionales además de su lista de datos.Calcula la estándar de muestra en lugar de la estándar de población.
fuente
En Python 2.7, puede usar NumPy para
numpy.std()obtener la desviación estándar de la población .En Python 3.4
statistics.stdev()devuelve la desviación estándar de la muestra. Lapstdv()función es la misma quenumpy.std().fuente
Usando Python, aquí hay algunos métodos:
Enfoque1: uso de una función
Método 2: calcular la varianza y sacar su raíz cuadrada
Enfoque 3: usar matemáticas básicas
Nota:
variancecalcula la varianza de la población de muestrapvariancecalcula la varianza de toda la poblaciónstdevypstdevfuente
código Python puro:
fuente
sqrt(sum((x - mean)**2 for x in lst) / len(lst))Las otras respuestas cubren cómo hacer std dev en python lo suficiente, pero nadie explica cómo hacer el extraño recorrido que ha descrito.
Voy a asumir que AZ es toda la población. Si no, vea la respuesta de Ome sobre cómo hacer una inferencia a partir de una muestra.
Entonces, para obtener la desviación estándar / media del primer dígito de cada lista, necesitaría algo como esto:
Para acortar el código y generalizarlo a cualquier enésimo dígito, use la siguiente función que generé para usted:
Ahora puede simplemente obtener el stdd y la media de todos los enésimos lugares de AZ de esta manera:
fuente
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")