python实例学习——基本统计值计算
1.1 问题背景
日常生活中,我们总要处理一些数据,比如说平均值,和,标准差等等,老式的笔算已经完全满足不了大数据背景下的数据处理。相信用过excel的小伙伴们一定知道可以通过函数,进行对庞大数据的处理,那么通过python呢?
1.2 问题前准备
根据IPO的思想方法,我们可以应当作出如下准备:
输入:接受用户输入、文件、网络的一组数据。
处理:适当的数据结构和算法。
输出:想要统计的值。
因为涉及到数值的计算,可以运用math库,从而简化代码
1.3 函数准备
通过一个函数用来接受用户数据,其他函数用来进行处理数据,最后进行输出,整个程序完成。
1.4 编写步骤
1.4.1 调用math库中的平方根函数
from math import sqrt
1.4.2 接受用户输入数据
def getn():
nums = [] #建立一个空列表,用来接受数据
a = input("请输入单个数据(数据录入完成后,直接空格以退出):")
while a != '':
nums.append(eval(a)) #非空格则增加数据
a = input("请输入单个数据(数据录入完成后,直接空格以退出):")
1.4.3 计算平均值
def mean(numbers):
s = 0.0
for i in numbers:
s = s + num
return s/len(numbers)
1.4.4 计算标准差
标准差的计算公式:将一组数据s1,s2,···,sn,则他们的方差的数学表达式为:
首先求出算术平均值
M
=
∑
i
=
1
n
s
i
n
M=\dfrac{\displaystyle\sum_{i=1}^{n}\LARGE s \tiny i } {n}
M=ni=1∑nsi
方差就是 s 2 = ∑ i = 1 n ( s i − M ) 2 n s^2=\dfrac{\displaystyle\sum_{i=1}^{n}(\LARGE s \tiny i \large -M)^2}{n} s2=ni=1∑n(si−M)2
标准差就是 s = ∑ i = 1 n ( s i − M ) 2 n s = \sqrt\dfrac{\displaystyle\sum_{i=1}^{n}(\LARGE s \tiny i \large -M)^2}{n} s=ni=1∑n(si−M)2
def dev(numbers,mean):
sdev = 0.0
for num in numbers:
sdev = sdev + (num - mean)**2
return sqrt(sdev / (len(numbers)))
1.4.5 计算中位数
def medi(numbers):
s=sorted(numbers)
size = len(numbers)
if size % 2 == 0:
med = (s[size//2]+s[size//2+1])/2
else:
med = (s[size//2+1])
return med
1.4.6 整合求结果
n = getn()
m = mean(n)
print("平均值{},标准差{},中位数{}".format(m,dev(m,n),medi(n)))
1.5 整体代码
from math import sqrt
def getn():
nums = []
a = input("请输入单个数据(数据录入完成后,直接空格以退出):")
while a != '':
nums.append(eval(a))
a = input("请输入单个数据(数据录入完成后,直接空格以退出):")
return(nums)
def mean(numbers):
s = 0.0
for num in numbers:
s = s + num
return s/len(numbers)
def dev(numbers,mean):
sdev = 0.0
for num in numbers:
sdev = sdev + (num - mean)**2
return sqrt(sdev / (len(numbers)))
def medi(numbers):
s=sorted(numbers)
size = len(numbers)
if size % 2 == 0:
med = (s[size//2-1]+s[size//2])/2
else:
med = (s[size//2])
return med
n = getn()
m = mean(n)
print("平均值{},标准差{},中位数{}".format(m,dev(n,m),medi(n)))
1.6 运算结果
================ RESTART: ================
请输入单个数据(数据录入完成后,直接空格以退出):1
请输入单个数据(数据录入完成后,直接空格以退出):3
请输入单个数据(数据录入完成后,直接空格以退出):2
请输入单个数据(数据录入完成后,直接空格以退出):4
请输入单个数据(数据录入完成后,直接空格以退出):5
请输入单个数据(数据录入完成后,直接空格以退出):
平均值3.0,标准差1.4142135623730951,中位数3
1.7 小结
列表在实现基本数据统计时发挥了很重要的作用,主要表现在以下3个方面。
(1)列表是一个动态长度的数据结构,可以根据需求增加或减少元素。
(2)列表的一系列方法或操作符为计算提供了简单的元素运算手段。
(3)列表提供了对每个元素的简单访问方式及所有元素的遍历方式。