第二章
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)計算這兩個對象之間的上確界距離。