【python】描述性统计计算偏斜度和峭度

文章目录

1.编写计算偏斜度和峭度的函数。并用自己编写的函数计算课本23页的习题1.5数据的偏斜度和峭度。


方法一:(套公式)

python 复制代码
import random
import numpy as np
import pandas as pd
data = pd.read_excel("E:\习题1.5数据.xlsx")
data = np.array(data)
data_var = np.var(data) # 计算方差
data_mean = np.mean(data) # 计算均值
data_skewness = np.mean((data-data_mean)**3) # 计算偏斜度
data_kurtosis = np.mean((data-data_mean)**4)/pow(data_var,2) - 3 # 计算峭度
print('偏斜度和峭度:')
print(data_skewness,data_kurtosis,sep='\n')

方式二:(直接函数调用)

python 复制代码
import scipy.stats as stats
data_skewness = stats.skew(data)
data_kurtosis = stats.kurtosis(data)
print('偏斜度和峭度:')
print(data_skewness,data_kurtosis,sep='\n')

2.从1.5数据中随机抽取2个容量为20的样本,分别计算它们的平均数和标准差

python 复制代码
import random
import numpy as np
import pandas as pd
data = pd.read_excel("E:\习题1.5数据.xlsx")
data = np.array(data)
# 随机抽取2个容量为20的样本
data = list(data) # 将数组转为列表
sample1 = random.sample(data,20) # 样本1
sample2 = random.sample(data,20) # 样本2
sample1_mean = np.mean(sample1) # 计算样本1的均值
sample1_std = np.std(sample1) # 计算样本1的标准差
print('样本1的均值和标准差:')
print(sample1_mean,sample1_std,sep='\n')
sample2_mean = np.mean(sample2) # 计算样本1的均值
sample2_std = np.std(sample2) # 计算样本1的标准差
print('样本2的均值和标准差:')
print(sample2_mean,sample2_std,sep='\n')

3.请绘制给定数据的频率分布直方图,计算数据的均值、标准差、偏斜度和峭度。

python 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_excel("E:\data.xlsx")
data = np.array(data)
# 计算数据的频率分布
counts,bins = np.histogram(data)
# 绘制直方图
plt.hist(data,bins = bins,align='left',rwidth=0.9)
plt.title('鱼类体长数据的频率分布直方图')
plt.xlabel('鱼的体长')
plt.ylabel('频率')
# 显示图形
plt.show()

data_mean = np.mean(data) # 计算均值
data_var = np.var(data) # 计算方差
data_std = np.std(data) # 计算标准差
data_skewness = np.mean((data-data_mean)**3) # 计算偏斜度
data_kurtosis = np.mean((data-data_mean)**4)/pow(data_var,2) - 3 # 计算峭度
print('均值、标准差、偏斜度、峭度分别为:')
print(data_mean,data_std,data_skewness,data_kurtosis,sep='\n')

4.仿照所给图像,生成p=0.1、0.3、0.5、0.7和0.9的二项分布曲线,作在同一张图上。

python 复制代码
import matplotlib.pyplot as plt
from scipy.stats import binom
import numpy as np
plt.rcParams["font.sans-serif"] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False

# 指定试验次数n
n = 10
# 指定p值列表
p_values = [0.1, 0.3, 0.5, 0.7, 0.9]
# 绘图
plt.figure()
for i, p in enumerate(p_values):
    # 计算二项分布的概率
    y = binom.pmf(np.arange(n + 1), n, p)
    # 绘制曲线
    plt.plot(np.arange(n + 1), y, label=f'p={p}')

# 设置图表标题和轴标签
plt.title('二项分布曲线')
plt.xlabel('x')
plt.ylabel('概率')
plt.legend()
# 显示图表
plt.show()
相关推荐
编程、小哥哥3 分钟前
python操作mysql
android·python
Serendipity_Carl4 分钟前
爬虫基础之爬取某站视频
爬虫·python·pycharm
峰子20126 分钟前
B站评论系统的多级存储架构
开发语言·数据库·分布式·后端·golang·tidb
2401_8904167110 分钟前
Recaptcha2 图像怎么识别
人工智能·python·django
杰九16 分钟前
我的世界(Minecraft)计算器python源码
python·开源·游戏程序
Channing Lewis33 分钟前
python如何使得pdf加水印后的大小尽可能小
开发语言·python·pdf
_.Switch1 小时前
Python Web开发:使用FastAPI构建视频流媒体平台
开发语言·前端·python·微服务·架构·fastapi·媒体
草明1 小时前
Mongodb 慢查询日志分析 - 1
数据库·python·mongodb
yyytucj1 小时前
python--列表list切分(超详细)
linux·开发语言·python
大数据魔法师2 小时前
1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储
爬虫·python