st.norm.cdf(0)
- 1
- 2
- 3
输出:0.5
(2) 均值为 3, 标准差为1,累计分布到 3 的概率
st.norm(3,1).cdf(3)
- 1
或
st.norm.cdf(3,3,1)
- 1
输出:0.5
(3) 均值为 3, 标准差为 1, 累计概率为 0.5 的反函数值
st.norm.ppf(0.5,3,1)
- 1
输出:3.0
2. 计算偏度和峰度
在计算一个样本的偏度或峰度时,对于一般的数组类型,要用到统计分析工具包 scipy,对于 pandas 中的数据类型,可以调用 pandas 自带的计算偏度或峰度的函数。
>>> import scipy.stats as st
>>> a = [89, 23, 45, 18]
>>> st.skew(a) # 计算偏度
0.7565543738808015
>>> st.kurtosis(a) # 计算峰度
-1.0489580648783101
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
需要注意的是,pandas 计算峰度时需要至少 4 个数据。
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.array([[85, 68, 90], [82, 63, 88], [84, 90, 78]]), columns=['统计学', '高数', '英语'], index=['张三', '李四', '王五'])
>>> df
统计学 高数 英语
张三 85 68 90
李四 82 63 88
王五 84 90 78
>>> df.iloc[1, :].skew() # 计算第二行的偏度
-1.3294040702410526
>>> df.skew(axis = 0) # 计算所有列的偏度
统计学 -0.935220
高数 1.498959
英语 -1.545393
dtype: float64
>>> df.skew(axis = 1) # 计算所有行的偏度
张三 -1.373033
李四 -1.329404
王五 0.000000
dtype: float64
>>> df1 = pd.DataFrame(np.array([[85, 68, 90, 65], [82, 63, 88, 83], [84, 90, 78, 90], [72, 68, 91, 84]]), columns=[‘统计学’, ‘高数’, ‘英语’, ‘计算机’], index=[‘张三’, ‘李四’, ‘王五’, ‘马六’])
>>> df1
统计学 高数 英语 计算机
张三 85 68 90 65
李四 82 63 88 83
王五 84 90 78 90
马六 72 68 91 84
>>> df1.kurt(axis = 0) # 计算 df1 所有列的偏度
统计学 3.090874
高数 3.365664
英语 3.090874
计算机 2.769386
dtype: float64
>>> df1.iloc[:, 2].kurt() #计算 df1 第 3 列的偏度
3.090874188966101
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
</div><div><div></div></div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>