第二章
2.2假设所分析的数据包括属性age,它在数据元组中的值(以递增序)为13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70.
(a)该数据的均值是多少?中位数是什么?
import numpy as np
age = [13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70]
#均值
print('均值为:',np.average(age))
#中位数
print('中位数:',np.median(age))
该数的均值为29.963,中位数为25
(b)该数据的众数是什么?该数据的模态(即二模、三模等)。
import numpy as np
age = [13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70]
#众数
print('众数:',stats.mode(age)[0][0])
该数的众数为25和35,即该数据是一个双峰的分布,即二模。
(c)该数据的中列数是多少?
该数的中列数是(70+13)/2=41.5
(d)你能(粗略地)找出该数据的第一个四分位(Q1)和第三个四分位数(Q3)吗?
第一个四分位数为:⌈27/4⌉=7处,Q1 = 20,第三个四分位数为:⌈27/4⌉ * 3 = 21处,Q3 = 35
(e)给出该数据的五数概括。
五数概括:中位数(Q2)、四分位数(Q1)和(Q3)、最小值、最大值组成
(f)绘制该数据的盒图。
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
import matplotlib
age = [13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70]
#盒图
df = pd.DataFrame(age)
df.plot.box(title = 'boxplot of age')
plt.grid(linestyle='--',alpha=0.3)
plt.show()
(g)分位数—分位数图与分位数图有何不同?
2.3 设给定的数据集已经分组到区间。这些区间和对应频率如下所示:
age | frequency |
1~5 | 200 |
6~15 | 450 |
16~20 | 300 |
21~50 | 1500 |
51~80 | 700 |
81~110 | 44 |
计算该数据的近似中位数
N = 200 + 450 + 300 + 1500 + 700 + 44 = 3194 (∑frequence)l = 950 (frequence)median = 1500
则median = 21 + (N/2 - (∑frequence)l))/(renquence) * 30 = 33.94 中位数33.94位于21~50区间
2.4假设医院对18个随机挑选的成年人检查年龄和身体肥胖,得到如下结果:
age | 23 | 23 | 27 | 27 | 39 | 41 | 47 | 49 | 50 |
%fat | 9.5 | 26.5 | 7.8 | 17.8 | 31.4 | 25.9 | 27.4 | 27.2 | 31.2 |
age | 52 | 54 | 54 | 56 | 57 | 58 | 58 | 60 | 61 |
%fat | 34.6 | 42.5 | 28.8 | 33.4 | 30.2 | 34.1 | 32.9 | 41.2 | 35.7 |
(a)计算age和%fat的均值,中位数和标准差。
import numpy as np
age = [23,23,27,27,39,41,47,49,50,52,54,54,56,57,58,58,60,61]
fat = [9.5,26.5,7.8,17.8,31.4,25.9,27.4,27.2,31.2,34.6,42.5,28.8,33.4,30.2,34.1,32.9,41.2,35.7]
#均值
print('age的均值为:'np.agerage(age))
print('%fat的均值为:'average(fat))
#中位数
print('age的中位数为:'np.median(age))
print('%fat的中位数为:'np.median(fat))
#标准差
print('age的标准差为:'np.sqrt(sun(pow(age-np.average(age),2))))
print('%fat的标准差为:'np.sqrt(sum(pow(fat-np.average(fat),2))))
age的平均值为:46.44,中位数为:51,标准差为:13.22
fat的平均值为:28.78,中位数为:30.7,标准差为:9.25
(b)绘制age和%fat的盒图。
import matplotlib.pyplot as plt
import statsmodels.api as sm
import matplotlib
age = [23,23,27,27,39,41,47,49,50,52,54,54,56,57,58,58,60,61]
fat = [9.5,26.5,7.8,17.8,31.4,25.9,27.4,27.2,31.2,34.6,42.5,28.8,33.4,30.2,34.1,32.9,41.2,35.7]
#age盒图
df = pd.DataFrame(age)
df.plot.box(title = 'boxplot of age')
plt.grid(linestyle='--',alpha=0.3)
plt.show()
#%fat盒图
df = pd.DataFrame(fat)
df.plot.box(title = 'boxplot of %fat')
plt.grid(linestyle='--',alpha=0.3)
plt.show()
(c)绘制基于这两个变量的散点图和q-q图。
from scipy import stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
import matplotlib
#散点图
plt.title('age-%fat')
plt.scatter(age,fat,alpha=0.6)
plt.show()
2.6给定两个被元组(22,1,42,10)和(20,0,36,8)表示的对象。
(a)计算这两个对象之间的欧几里得距离。
(b)计算这两个对象之间的曼哈顿距离。
(c)使用q = 3,计算这两个对象之间的闵可夫斯基距离。
(d)计算这两个对象之间的上确界距离。