第8章 数据运算
8.1 算术运算
- 算术运算就是基本的加减乘除,在Excel或Python中数值类型的任意两列可以直接进行加、减、乘、除运算,而且是对应元素进行加、减、乘、除运算,Excel 中的算术运算比较简单,这里就不展开了,下面主要介绍Python中的算术运算。
df = pd.Dataframe([(1,2,3),(4,5,6),(7,8,9)],columns = ["一列","二列","三列"])
df
一列 二列 三列
0 1 2 3
1 4 5 6
2 7 8 9
#两列相加
df["一列"]+df["二列"]
0 3
1 9
2 15
dtype: int64
#两列相减
df["一列"]-df["二列"]
0 -1
1 -1
2 -1
dtype: int64
#两列相乘
df["一列"]*df["二列"]
0 2
1 20
2 56
dtype: int64
#两列相除
df["一列"]/df["二列"]
0 0.500
1 0.800
2 0.875
dtype: float64
#任意一列加/减一个常数值,这一列中的所有值都加/减这个常数值
df["三列"]+2
0 5
1 8
2 11
Name: 三列, dtype: int64
#任意一列乘/除一个常数值,这一列中的所有值都乘/除这一常数值
df["三列"]*2
0 6
1 12
2 18
Name: 三列, dtype: int64
8.2 比较运算
- 比较运算和Python基础知识中讲到的比较运算一致,也是常规的大于、等于、小于之类的,只不过这里的比较是在列与列之间进行的。常用的比较运算符见2.9.2节。
df["一列"]>df["二列"]
0 False
1 False
2 False
dtype: bool
8.3 汇总运算
- 上面讲到的算术运算和比较运算都是在列与列之间进行的,运算结果是有多少行的值就会返回多少个结果,而汇总运算是将数据进行汇总返回一个汇总以后的结果值。
8.3.1 count非空值计数
- 非空值计数就是计算某一个区域中非空(单元格)数值的个数。
- 在 Python 中,直接在整个数据表上调用 count()函数,返回的结果为该数据表中每列的非空值的个数,具体实现如下所示。
df.count()
订单编号 5
客户姓名 5
唯一识别码 5
年龄 5
交易日期 5
销售id 5
dtype: int64
- count()函数默认是求取每一列的非空数值的个数,可以通过修改axis参数让其等于1,来求取每一行的非空数值的个数。
df.count(axis = 1)
0 6
1 6
2 6
3 6
4 6
dtype: int64
- 也可以把某一列或者某一行索引出来,单独查看这一列或这一行的非空值个数。
8.3.2 sum求和
- 求和就是对某一区域中的所有数值进行加和操作。
- 在Python中,直接在整个数据表上调用sum()函数,返回的是该数据表每一列的求和结果
df.sum()
订单编号 A1A2A3A4A5
客户姓名 张旭李刚孙峰赵恒赵恒
唯一识别码 514
年龄 489
销售id 9
dtype: object
df.sum(axis = 1)
0 126
1 138
2 127
3 310
4 311
dtype: int64
- 也可以把某一列或者某一行索引出来,单独对这一列或这一行数据进行求和操作。
8.3.3 mean求均值
- 在Python中的求均值利用的是mean()函数,如果对整个表直接调用mean()函数,返回的是该表中每一列的均值。
df["年龄"].mean()
97.8
- mean()函数默认是对数据表中的每一列进行求均值运算,可通过修改 axis 参数,让其等于1,来对每一行进行求均值运算。
- 也可以把某一列或者某一行通过索引的方式取出来,然后在这一行或这一列上调用mean()函数,单独求取这一行或这一列的均值。
8.3.4 max求最大值
df["年龄"].max()
204
8.3.5 min求最小值
df["年龄"].min()
23
8.3.7 mode求众数
- 顾名思义,众数就是一组数据中出现次数最多的数,求众数就是返回这组数据中出现次数最多的那个数。
df["年龄"].mode()
204
8.3.8 var求方差
- 方差是用来衡量一组数据的离散程度(即数据波动幅度)的。
df["年龄"].var()
9417.2
8.3.9 std求标准差
- 标准差是方差的平方根,二者都是用来表示数据的离散程度的。
- 在Excel中计算标准差使用的是stdevp()函数
df["年龄"].std()
97.04225883603493
8.3.10 quantile求分位数
- 分位数是比中位数更加详细的基于位置的指标,分位数主要有四分之一分位数、四分之二分位数、四分之三分位数,而四分之二分位数就是中位数。
- 在Python中求分位数用的是quantile()函数,要在quantile后的括号中指明要求取的分位数值,quantile()函数与其他函数的使用规则相同。
df["年龄"].quantile(q = 0.75)
204.0
8.4 相关性运算
- 相关性常用来衡量两个事物之间的相关程度
- 在Python中求取相关系数用的是corr()函数
df = pd.Dataframe([(1,3),(3,5),(5,6),(6,8),(8,10)])
df
0 1
0 1 3
1 3 5
2 5 6
3 6 8
4 8 10
df.corr()
0 1
0 1.000000 0.986301
1 0.986301 1.000000