Wang Haihua
🍈 🍉🍊 🍋 🍌
使用 NumPy 库中的函数可以计算上述统计量, 也可以使用模块 scipy.stats 中的函数计算统计量, 模块 scipy.stats 中的函数我们就不介绍 了。 NumPy 库中计算统计量的函数见表 $4.3$ 所列。
\begin{equation} \begin{array}{c|ccccc} \hline \text { 函数 } & \text { mean median ptp } & \text { var } & \text { std } & \text { cov } & \text { corrcoef } \\ \text { 计算功能 } & \text { 均值 中位数 极差 } & \text { 方差 } & \text { 标准差 } & \text { 协方差 } & \text { 相关系数 } \\ \hline \end{array} \end{equation}\begin{array}{cl|ll|l|l|l|l|l|l} \hline \text { 身高 } & \text { 体重 } & \text { 身高 } & \text { 体重 } & \text { 身高 } & \text { 体重 } & \text { 身高 } & \text { 体重 } & \text { 身高 }& \text { 体重 } \\ \hline 172 & 75 & 169 & 55 & 169 & 64 & 171 & 65 & 167 & 47 \\ 171 & 62 & 168 & 67 & 165 & 52 & 169 & 62 & 168 & 65 \\ 166 & 62 & 168 & 65 & 164 & 59 & 170 & 58 & 165 & 64 \\ 160 & 55 & 175 & 67 & 173 & 74 & 172 & 64 & 168 & 57 \\ 155 & 57 & 176 & 64 & 172 & 69 & 169 & 58 & 176 & 57 \\ 173 & 58 & 168 & 50 & 169 & 52 & 167 & 72 & 170 & 57 \\ 166 & 55 & 161 & 49 & 173 & 57 & 175 & 76 & 158 & 51 \\ 170 & 63 & 169 & 63 & 173 & 61 & 164 & 59 & 165 & 62 \\ 167 & 53 & 171 & 61 & 166 & 70 & 166 & 63 & 172 & 53 \\ 173 & 60 & 178 & 64 & 163 & 57 & 169 & 54 & 169 & 66 \\ 178 & 60 & 177 & 66 & 170 & 56 & 167 & 54 & 169 & 58 \\ 173 & 73 & 170 & 58 & 160 & 65 & 179 & 62 & 172 & 50 \\ 163 & 47 & 173 & 67 & 165 & 58 & 176 & 63 & 162 & 52 \\ 165 & 66 & 172 & 59 & 177 & 66 & 182 & 69 & 175 & 75 \\ 170 & 60 & 170 & 62 & 169 & 63 & 186 & 77 & 174 & 66 \\ 163 & 50 & 172 & 59 & 176 & 60 & 166 & 76 & 167 & 63 \\ 172 & 57 & 177 & 58 & 177 & 67 & 169 & 72 & 166 & 50 \\ 182 & 63 & 176 & 68 & 172 & 56 & 173 & 59 & 174 & 64 \\ 171 & 59 & 175 & 68 & 165 & 56 & 169 & 65 & 168 & 62 \\ 177 & 64 & 184 & 70 & 166 & 49 & 171 & 71 & 170 & 59 \\ \hline \end{array}学校随机抽取 100 名学生, 测量他们的身高和体重, 所得数据 如下表所示。试分别求身高的均值、中位数、极差、方差、标准差; 计算 身高与体重的协方差、相关系数。
协方差为: $16.982323232323235$ 相关系数为: $0.4560968250128602$ 即身高的均值、中位数、极差、方差、标准差分别为 $170.25 , 170 , 31$, $28.8875,5.3747$ 。身高与体重的协方差、相关系数分别为 $16.9823,0.4561$ 。
Pandas 的 DataFrame 数据结构为我们提供了若干统计函数, 表 $4.5$ 给 出了部分统计量的方法。
方法 | 说明 |
---|---|
count | 返回非 NaN 数据项的个数 |
mad | 计算中位数绝对偏差 (Median absolute deviation): |
mode | 返回众数, 即一组数据中出现次数最多的数据值 |
skew | 返回偏度 |
kurt | 返回峰度 |
quantile | 返回样本分位数, 默认返回样本的 50%分位数 |
from numpy import reshape, hstack, mean, median, ptp, var, std, cov, corrcoef
import pandas as pd
df = pd.read_excel("data/height_weight.xlsx",header=None)
a=df.values #提取数据矩阵
h=a[:,::2] #提取奇数列身高
w=a[:,1::2] #提取偶数列体重
h=reshape(h,(-1, 1)) #转换成列向量,自动计算行数
w=reshape(w,(-1, 1)) #转换成列向量,自动计算行数
hw=hstack([h,w]) #构造两列的数组
print([mean(h),median(h),ptp(h),var(h),std(h)]) #计算均值,中位数,极差,方差,标准差
print("协方差为:{}\n相关系数为:{}".format(cov(hw.T)[0,1], corrcoef(hw.T)[0,1]))
[170.25, 170.0, 31, 28.8875, 5.374709294464213] 协方差为:16.982323232323235 相关系数为:0.4560968250128602