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=1nsinM=\dfrac{\displaystyle\sum_{i=1}^{n}\LARGE s \tiny i } {n}

方差就是 s2=i=1n(siM)2ns^2=\dfrac{\displaystyle\sum_{i=1}^{n}(\LARGE s \tiny i \large -M)^2}{n}

標準差就是s=i=1n(siM)2ns = \sqrt\dfrac{\displaystyle\sum_{i=1}^{n}(\LARGE s \tiny i \large -M)^2}{n}

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)列表提供了對每個元素的簡單訪問方式及所有元素的遍歷方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章