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=1nsi

方差就是 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=1n(siM)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=1n(siM)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)列表提供了对每个元素的简单访问方式及所有元素的遍历方式。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值