Pandas描述性统计简介
描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。
Pandas 库正是对描述统计学知识完美应用的体现,可以说如果没有“描述统计学”作为理论基奠,那么 Pandas 是否存在犹未可知。下列表格对 Pandas 常用的统计学函数做了简单的总结:
从描述统计学角度出发,我们可以对 DataFrame 结构执行聚合计算等其他操作,比如 sum() 求和、mean()求均值等方法。
在 DataFrame 中,使用聚合类方法时需要指定轴(axis)参数。下面介绍两种传参方式:对行操作,默认使用 axis=0 或者使用 "index";对列操作,默认使用 axis=1 或者使用 "columns"。
也可以说,axis=0 表示按垂直方向进行计算,axis=1 表示按水平方向进行计算。
下面对pandas常用的统计学方法进行测试
若无显式的写出axis的取值,默认axis=0,即按垂直方向进行计算
首先创建一个DataFrame
import pandas as pd
import numpy as np
data = {
'Name':pd.Series(['小明','小亮','小红','小华',\
'老赵','小曹','小陈','老李',\
'老王','小冯','小何','老张']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.DataFrame(data)
df
输出:
目录
sum()方法
df.sum()
若没有参数,默认axis=0,即对所有列进行求和
输出:
Name 小明小亮小红小华老赵小曹小陈老李老王小冯小何老张
Age 382
Rating 44.92
dtype: object
当然也可以选择某一列求和
df.Age.sum()
选择Age列,对Age列的全部属性值求和
输出:
382
当然也可以对行进行求和
df.sum(axis=1)
对各行中数据类型为数值型的数据求和
输出:
0 29.23
1 29.24
2 28.98
3 25.56
4 33.20
5 33.60
6 26.80
7 37.78
8 42.98
9 34.80
10 55.10
11 49.65
dtype: float64
count()方法
df.count()
将输出各个列的非空值数量
输出:
Name 12
Age 12
Rating 12
dtype: int64
mean()方法
df.mean()
将对数据类型为数值型的各个列中的数据求平均值
输出:
Age 31.833333
Rating 3.743333
dtype: float64
当然也可以选择某一列,对这一列的值求均值
df.Age.mean()
输出:
31.833333333333332
median()方法
df.median()
求数据类型为数值型的各个列中的中位数
输出:
Age 29.50
Rating 3.79
dtype: float64
mode()方法
df.Age.mode()
输出Age列中出现次数最多的数值
输出:
0 23
1 25
2 30
dtype: int64
由于数值23、25、30在Age列中均出现了2次,且出现次数是最多的,所以将这三个数输出
结果数据类型为Series
若某一列没有重复的数据,则将会输出全部数据
df.Rating.mode()
输出:
0 2.56
1 2.98
2 3.20
3 3.24
4 3.65
5 3.78
6 3.80
7 3.98
8 4.10
9 4.23
10 4.60
11 4.80
dtype: float64
std()方法
输出数据类型为数值型的各个列的标准差
df.std()
输出:
Age 9.232682
Rating 0.661628
dtype: float64
describe()方法
describe()函数输出平均值、std、和IQR(四分位距)等一系列统计信息
df.describe()
输出:
当然只计算数据类型为数值型的列
cumsum()方法
计算累计和
df.cumsum()
输出:
若将axis的值设置为1或者'columns',将会报错,因为str类型的数据不能与数值型的数据相加