在 Python 中计算没有包的标准偏差?

问题描述 投票:0回答:6

我正在尝试弄清楚如何创建一个脚本来计算文件的标准偏差。例如,假设我 DLed 了一个 csv,上面有一个值列表。我想通过运行 python 程序找到这些值的 SD。我们这里没有使用 numpy!

python-3.x statistics opencsv standard-deviation
6个回答
8
投票

如果允许使用标准库,

import math

xs = [0.5,0.7,0.3,0.2]     # values (must be floats!)
mean = sum(xs) / len(xs)   # mean
var  = sum(pow(x-mean,2) for x in xs) / len(xs)  # variance
std  = math.sqrt(var)  # standard deviation

如果不是,您需要用手近似

sqrt
。例如,您可以使用二进制搜索或 Newton 的方法。这是一个 维基百科页面 这样做的方法


4
投票

Python 3.4 及以上版本有一个名为 statistics 的包,它具有 standard deviation (pstdev) 和其他功能

这是一个如何使用它的例子:

import statistics

data = [1, 1, 2.5, 6.5, 7.3, 8, 9.2]

print(statistics.pstdev(data))
# 3.2159043543498815

1
投票
 from math import sqrt
 n= [11, 8, 8, 3, 4, 4, 5, 6, 6, 7, 8] 

 mean =sum(n)/len(n)
 SUM= 0
 for i in n :
     SUM +=(i-mean)**2



 stdeV = sqrt(SUM/(len(n)-1)) 
 print(stdeV)

0
投票
filename = "C:\Users\mmb0368\Desktop\input.txt"
file = open("C:\Users\mmb0368\Desktop\input.txt","rb")

n = file.readlines()

num_list = map(lambda n: n.rstrip("\n"), n)
num_list = [int(x) for x in num_list]
mean = sum(num_list)/len(num_list)
print mean, max(num_list), min(num_list)

for snDev in num_list:

    snDev = mean**(1.0/2)
print snDev

0
投票
from math import sqrt

def getAverage(mylist):
    """
    This function calculates the average of a list of numbers.

    Parameters:
    mylist (list): List of numbers

    Returns:
    float: Average of the numbers in the list

    Example:
    >>> getAverage([1,5,10])
    5.333333333333333
    """
    return sum(mylist)/len(mylist)

def getStandardDeviation(mylist):
    """
    This function calculates the standard deviation of a list of numbers.

    Parameters:
    mylist (list): List of numbers

    Returns:
    float: Standard deviation of the numbers in the list

    Example:
    >>> getStandardDeviation([1,5,10])
    4.509249752822894
    """
    ls=[]
    for i in mylist:
        ls.append((i - getAverage(mylist))**2)
    return sqrt( sum(ls) / (len(mylist) - 1) )

mylist = [1,5,10]

getAverage(mylist=mylist)
# 5.333333333333333

getStandardDeviation(mylist=mylist)
# 4.509249752822894

此代码包含两个函数

getAverage
getStandardDeviation
,分别用于计算数字列表的平均值和标准偏差。
getAverage
函数接受一个数字列表并返回这些数字的平均值。
getStandardDeviation
函数接受一个数字列表并返回这些数字的标准差,方法是首先找到每个数字与平均值的平方差,然后取这些平方差的平均值的平方根。最后定义了一个数字样本列表
mylist
,并且两个函数都以这个列表作为参数被调用。


0
投票
def calculateSD(self, nums):
    n = len(nums)
    mean = sum(nums) // n
    variance = sum((x - mean) ** 2 for x in nums) / (n - 1)

    stdev = variance ** 0.5
    print(stdev)
© www.soinside.com 2019 - 2024. All rights reserved.