任務描述
Q1、人體體溫的總體均值是否爲98.6華氏度?
Q2、人體的溫度是否服從正態分佈?
Q3、人體體溫中存在的異常數據是哪些?
Q4、男女體溫是否存在明顯差異?
Q5、體溫與心率間的相關性(強?弱?中等?)
數據鏈接:https://pan.baidu.com/s/1t4SKF6U2yyjT365FaE692A*
筆者使用的是jupyter 進行的數據分析
#導入相關的庫
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
#讀入數據
file = pd.read_csv("test.csv")
#對查看數據前5行
file.head()
數據字段說明:
-
gender:性別,1爲男性,2爲女性
-
Temperature:體溫
-
HeartRate:心率
Q1、人體體溫的總體均值是否爲98.6華氏度?
# 1、人體體溫的總體均值是否爲98.6華氏度?
file.describe()
file.groupby("Gender").mean()
從分析結果可以看出 無論是從總體的均值還是男女性別的均值都是小於 98.6華氏度的
Q2、人體的溫度是否服從正態分佈?
# 2、人體的溫度是否服從正態分佈?
#分別用kstest、shapiro、normaltest來驗證分佈係數
from scipy import stats
ks_test = stats.kstest(file['Temperature'], 'norm')
shapiro_test = stats.shapiro(file['Temperature'])
normaltest_test = stats.normaltest(file['Temperature'],axis=0)
print('ks_test:',ks_test)
print('shapiro_test:',shapiro_test)
print('normaltest_test:',normaltest_test)
# 繪製擬合正態分佈曲線
Temperature = file['Temperature']
plt.figure()
Temperature.plot(kind = 'kde') #原始數據的正態分佈
M_S = stats.norm.fit(Temperature) #正態分佈擬合的平均值loc,標準差 scale
normalDistribution = stats.norm(M_S[0], M_S[1]) # 繪製擬合的正態分佈圖
x = np.linspace(normalDistribution.ppf(0.01), normalDistribution.ppf(0.99), 100)
plt.plot(x, normalDistribution.pdf(x), c='orange')
plt.xlabel('Temperature about Person')
plt.title('Temperature on NormalDistribution', size=20)
plt.legend(['Temperature', 'NormDistribution'])
由於p >0.05, 接受原假設,認爲數據服從正態分佈
Q3、人體體溫中存在的異常數據是哪些?
#3、人體體溫中存在的異常數據是哪些? 3 sigma 原則
max_b = mean + 3 * std_
min_b = mean - 3 * std_
res = []
for i in file["Temperature"]:
if i >= max_b or i <= min_b:
res.append(i)
print("異常的數據有%d,分別是:",len(res))
for i in res:
print(i)
Q4、男女體溫是否存在明顯差異?
#男女體溫是否存在明顯差異
file.groupby('Gender').sum()
file.groupby("Gender").mean()
file.groupby("Gender").std()
沒有發現什麼差異
Q5、體溫與心率間的相關性(強?弱?中等?)
#體溫與心率間的相關性
file.corr()
根據:
·|r|≥0.8 高度相關;
·0.5≤|r|<0.8 中度相關;
·0.3≤|r|<0.5 低度相關;
·|r|<0.3 關係極弱,認爲不相關
體溫與心率間的相關係數爲:0.253656 小於0.3 認爲不想關