#导入包
import pandas as pd
import numpy as np
from scipy import stats
#读取数据
data=pd.read_excel('G:\Datasets\data.xlsx')
data
结果如下:
#取数据中的age列,并求该列的平均值
age=data['Age']
age.mean()
结果如下:
#从总的数据中抽取一百个样本
age_sample=age.sample(100)
x1=age_sample.mean()
age_sample.describe()
结果如下:
#求正态分布下的置信区间
#置信水平为95%
def norm_conf(data,confidence=0.95):
sample_mean=np.mean(data)
sample_std=np.std(data,ddof=1)
sample_size=len(data)
conf_intveral=stats.norm.interval(confidence,loc=sample_mean,scale=sample_std)
print(conf_intveral)
norm_conf(age_sample)
结果如下:
# 在同一数据下求T分布下的置信区间
def t_conf(data,conference=0.95):
sample_mean=np.mean(data)
sample_std=np.std(data,ddof=1)
sample_size=len(data)
conf_intveral=stats.t.interval(conference,df=(sample_size-1),loc=sample_mean,scale=sample_std)
print(conf_intveral)
t_conf(age_sample)
结果如下:
#这里将随即取1000次的100个样本,求每次的平均值
#将平均值存储在数组中
scale_means=[]
for _ in range(1000):
scale_sample=age.sample(100,replace=True)
mean=scale_sample.mean()
print(mean)
scale_means.append(mean)
结果如下:
#求取1000次下的正太分布置信区间估计
norm_conf(scale_means)
结果如下:
#求取1000次下的T分布置信区间估计
t_conf(scale_means)
结果如下:
#导入绘图工具包
import seaborn as sbn
import matplotlib.pyplot as plt
#将数据进行绘图显示
sbn.set_palette("hls") #设置所有图的颜色,使用hls色彩空间
sbn.distplot(scale_means,color="g",bins=15,kde=True)
plt.title('Age')
plt.xlim(25,35)
plt.grid(True)
plt.show()
结果如下: