学习笔记,这个笔记以例子为主。
开发工具:Spyder
文章目录
numpy描述性统计
数值型数据的描述性统计,主要包括了计算数值型数据的完整情况、最小值、均值、中位数、最大值、四分位数、极差、标准差、方差、协方差等。
在numpy库中提供了描述性统计的相关函数:
np.min() #最小值
np.max() #最大值
np.mean() #均值
np.ptp() #极差
np.median() #中位数
np.std() #标准差
np.var() #方差
np.cov() #协方差矩阵
- 例子
代码:
import numpy as np
datas = np.array([1, 2, 3, 4, 5, 6])
datas2 = np.array([4, 6, 7, 7, 8, 7])
print('最小值:', np.min(datas))
print('最大值:', np.max(datas))
print('均值:', np.mean(datas))
print('极差:', np.ptp(datas))
print('中位数:', np.median(datas))
print('标准差:', np.std(datas))
print('方差:', np.var(datas))
print('协方差矩阵:', np.cov(datas, datas2))
结果:
最小值: 1
最大值: 6
均值: 3.5
极差: 5
中位数: 3.5
标准差: 1.70782512766
方差: 2.91666666667
协方差 [[ 3.5 2.1]
[ 2.1 1.9]]
Pandas描述性统计
Pandas也提供了描述性统计的相关函数:
1 | | 非空观测数量 |
2 | | 所有值之和 |
3 | | 所有值的平均值 |
4 | | 所有值的中位数 |
5 | | 值的标准偏差 |
6 | | 所有值中的最小值 |
7 | | 所有值中的最大值 |
8 | | 绝对值 |
9 | | 数组元素的乘积 |
10 | | 累计总和 |
11 | | 累计乘积 |
pandas还提供了一个describe()方法,能够一次性得出数据框所有数值型特征的非空值数目、均值、标准差等。
- 例子
代码:
import pandas as pd
data = {'name':['Ada', 'Tom','Black', 'Jack', 'Lee'],
'age':[9, 19, 12, 15, 30],
'weight':[8, 4, 5, 6, 10],
'hight':[20, 35, 30, 33, 40]}
df = pd.DataFrame(data,
index = ['a1', 'a2', 'a3', 'a4', 'a5'])
print(df.sum())
print('-'*15)
print(df.sum(1))
print('-'*15)
print(df.mean())
print('-'*15)
print(df.min())
print('-'*15)
print(df.max())
print('-'*15)
print(df.median())
print('-'*15)
print(df.prod())
print('-'*15)
print(df.cumsum())
print('-'*15)
print(df[['age', 'weight', 'hight']].cumprod())
结果:
age 85
hight 158
name AdaTomBlackJackLee
weight 33
dtype: object
---------------
a1 37
a2 58
a3 47
a4 54
a5 80
dtype: int64
---------------
age 17.0
hight 31.6
weight 6.6
dtype: float64
---------------
age 9
hight 20
name Ada
weight 4
dtype: object
---------------
age 30
hight 40
name Tom
weight 10
dtype: object
---------------
age 15.0
hight 33.0
weight 6.0
dtype: float64
---------------
age 923400
hight 27720000
weight 9600
dtype: int64
---------------
age hight name weight
a1 9 20 Ada 8
a2 28 55 AdaTom 12
a3 40 85 AdaTomBlack 17
a4 55 118 AdaTomBlackJack 23
a5 85 158 AdaTomBlackJackLee 33
---------------
age weight hight
a1 9 8 20
a2 171 32 700
a3 2052 160 21000
a4 30780 960 693000
a5 923400 9600 27720000
备注:如果对整个df数据框进行累乘操作,则会报错【TypeError: can't multiply sequence by non-int of type 'str'
】,这是因为name为字符串类型,不能累乘。所以我们在做累乘操作时,应该去除name列,只留下age,weight,height列。