利用python計(jì)算均值、方差和標(biāo)準(zhǔn)差(Numpy和Pandas)
Python 中的 numpy 包 和 pandas 包都能夠計(jì)算均值、方差等,本文總結(jié)一下它們的用法。
1. Numpy 計(jì)算均值、方差、標(biāo)準(zhǔn)差
一般的均值可以用 numpy 中的 mean 方法求得:
>>> import numpy as np >>> a = [5, 6, 16, 9] >>> np.mean(a) 9.0
numpy 中的 average 方法不僅能求得簡(jiǎn)單平均數(shù),也可以求出加權(quán)平均數(shù)。average 里面可以跟一個(gè) weights 參數(shù),里面是一個(gè)權(quán)數(shù)的數(shù)組,例如:
>>> np.average(a) >>> 9.0 >>> np.average(a, weights = [1, 2, 1, 1]) >>> 8.4
計(jì)算方差時(shí),可以利用 numpy 中的 var 函數(shù),默認(rèn)是總體方差(計(jì)算時(shí)除以樣本數(shù) N),若需要得到樣本方差(計(jì)算時(shí)除以 N - 1),需要跟參數(shù) ddo f= 1,例如
>>> import pnumpy as np >>> a = [5, 6, 16, 9] >>> np.var(a) # 計(jì)算總體方差 18.5 >>> np.var(a, ddof = 1) # 計(jì)算樣本方差 24.666666666666668 >>> b = [[4, 5], [6, 7]] >>> b [[4, 5], [6, 7]] >>> np.var(b) # 計(jì)算矩陣所有元素的方差 1.25 >>> np.var(b, axis = 0) # 計(jì)算矩陣每一列的方差 array([1., 1.]) >>> np.var(b, axis = 1) # 計(jì)算矩陣每一行的方差 array([0.25, 0.25])
計(jì)算標(biāo)準(zhǔn)差時(shí),可以利用 numpy 中的 std 函數(shù),使用方法與 var 函數(shù)很像,默認(rèn)是總體標(biāo)準(zhǔn)差,若需要得到樣本標(biāo)準(zhǔn)差,需要跟參數(shù) ddof =1,
>>> import pnumpy as np >>> a = [5, 6, 16, 9] >>> np.std(a) # 計(jì)算總體標(biāo)準(zhǔn)差 4.301162633521313 >>> np.std(a, ddof = 1 ) # 計(jì)算樣本標(biāo)準(zhǔn)差 4.96655480858378 >>> np.std(b) # 計(jì)算矩陣所有元素的標(biāo)準(zhǔn)差 1.118033988749895 >>> np.std(b, axis = 0) # 計(jì)算矩陣每一列的標(biāo)準(zhǔn)差 array([1., 1.]) >>> np.std(b, axis = 1) # 計(jì)算矩陣每一列的標(biāo)準(zhǔn)差 array([0.5, 0.5])
2. Pandas 計(jì)算均值、方差、標(biāo)準(zhǔn)差
對(duì)于 pandas ,也可以用里面的 mean 函數(shù)可以求得所有行或所有列的平均數(shù),例如:
>>> import pandas as pd >>> df = pd.DataFrame(np.array([[85, 68, 90], [82, 63, 88], [84, 90, 78]]), columns=['統(tǒng)計(jì)學(xué)', '高數(shù)', '英語'], index=['張三', '李四', '王五']) >>> df 統(tǒng)計(jì)學(xué) 高數(shù) 英語 張三 85 68 90 李四 82 63 88 王五 84 90 78 >>> df.mean() # 顯示每一列的平均數(shù) 統(tǒng)計(jì)學(xué) 83.666667 高數(shù) 73.666667 英語 85.333333 dtype: float64 >>> df.mean(axis = 1) # 顯示每一行的平均數(shù) 張三 81.000000 李四 77.666667 王五 84.000000 dtype: float64
若要得到某一行或某一列的平均值,則可以使用 iloc 選取改行或該列數(shù)據(jù),后面跟 mean 函數(shù)就能得到,例如:
>>> df 統(tǒng)計(jì)學(xué) 高數(shù) 英語 張三 85 68 90 李四 82 63 88 王五 84 90 78 >>> df.iloc[0, :].mean() # 得到第 1 行的平均值 81.0 >>> df.iloc[:, 2].mean() # 得到第 3 列的平均值 85.33333333333333
pandas 中的 var 函數(shù)可以得到樣本方差(注意不是總體方差),std 函數(shù)可以得到樣本標(biāo)準(zhǔn)差,若要得到某一行或某一列的方差,則也可用 iloc 選取某行或某列,后面再跟 var 函數(shù)或 std 函數(shù)即可,例如:
>>> df.var() # 顯示每一列的方差 統(tǒng)計(jì)學(xué) 2.333333 高數(shù) 206.333333 英語 41.333333 dtype: float64 >>> df.var(axis = 1) # 顯示每一行的方差 張三 133.000000 李四 170.333333 王五 36.000000 dtype: float64 >>> df.std() # 顯示每一列的標(biāo)準(zhǔn)差 統(tǒng)計(jì)學(xué) 1.527525 高數(shù) 14.364308 英語 6.429101 dtype: float64 >>> df.std(axis = 1) # 顯示每一行的標(biāo)準(zhǔn)差 張三 11.532563 李四 13.051181 王五 6.000000 dtype: float64 >>> df.iloc[0, :].std() # 顯示第 1 行的標(biāo)準(zhǔn)差 11.532562594670797 >>> df.iloc[:, 2].std() # 顯示第 3 列的標(biāo)準(zhǔn)差 6.429100507328636
總結(jié)
到此這篇關(guān)于利用python計(jì)算均值、方差和標(biāo)準(zhǔn)差的文章就介紹到這了,更多相關(guān)python計(jì)算均值方差和標(biāo)準(zhǔn)差內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 常用日期處理-- datetime 模塊的使用
這篇文章主要介紹了python 如何對(duì)日期進(jìn)行處理,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09對(duì)python中assert、isinstance的用法詳解
今天小編就為的就分享一篇對(duì)python中assert、isinstance的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11