学习笔记,这个笔记以例子为主。
开发工具: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

​count()​

非空观测数量

2

​sum()​

所有值之和

3

​mean()​

所有值的平均值

4

​median()​

所有值的中位数

5

​std()​

值的标准偏差

6

​min()​

所有值中的最小值

7

​max()​

所有值中的最大值

8

​abs()​

绝对值

9

​prod()​

数组元素的乘积

10

​cumsum()​

累计总和

11

​cumprod()​

累计乘积

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列。