Pandas库的数据类型运算

本文基于Python的Pandas库,详细介绍了数据的算术、比较运算规则,包括算术运算法则中的广播运算和填充NaN,方法形式的运算允许自定义参数,以及比较运算中的布尔对象生成。内容涵盖不同维度数据的运算处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。

算术运算法则

算术运算根据行列索引,补齐后进行运算,不同索引之间不进行运算,运算默认产生浮点数 ;
补齐时默认填充NaN(空值);
二维和一维,一维和零维(实数)进行广播运算;
采用±*/符号进行的二元运算会产生新的对象;

a = pd.DataFrame(np.arange(12).reshape(3,4))
a
	0	1	2	3
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11
b = pd.DataFrame(np.arange(20).reshape(4,5))
b
	0	1	2	3	4
0	0	1	2	3	4
1	5	6	7	8	9
2	10	11	12	13	14
3	15	16	17	18	19
a + b

在这里插入图片描述
标签相同的行和列进行运算,不同的补齐后运算,补齐的值为NaN,NaN与任何元素运算都是NaN。

方法形式的运算

方法说明
.add(d,**argws)类型间加法运算,可选参数
.sub(d,**argws)类型间减法法运算,可选参数
.mul(d,**argws)类型间乘法法运算,可选参数
.div(d,**argws)类型间除法法运算,可选参数

这与±*/相比,好处在于可以增加一些可选参数。

a.add(b,fill_value=100)

在这里插入图片描述
可以看到使用fill_vallue先对a和b缺少的位置进行填充,随后再进行运算。
不同维度运算的结果如何呢?

b = pd.DataFrame(np.arange(20).reshape(4,5))
b
	0	1	2	3	4
0	0	1	2	3	4
1	5	6	7	8	9
2	10	11	12	13	14
3	15	16	17	18	19
c = pd.Series(np.arange(4))
c
0    0
1    1
2    2
3    3
dtype: int32
c - 10
0   -10
1    -9
2    -8
3    -7
dtype: int32

可以看到,一维和0维进行运算使用广播功能,相当于对0维数据使用当前值(10)填充至于一维数据量相同,在进行运算。

c - b

在这里插入图片描述
同理c-b也会将一维的c作用到b的每一个维度上,c默认作用到了b的一轴上,b中的每一行都与c做了相应运算。若要指定在0轴上发生运算,也就是希望c中的每一列都减去b中的每一列,这时就需要使用方法形式的运算来增加可选参数axis=0.

b.sub(c,axis=0)
	0	1	2	3	4
0	0	1	2	3	4
1	4	5	6	7	8
2	8	9	10	11	12
3	12	13	14	15	16

比较运算法则

  • 比较运算只能比较相同索引的元素,不进行补齐;
  • 二维和一维,一维和0维使用广播进行运算;
  • 使用">","<",">=","<=","!="等运算产生布尔对象;
a = pd.DataFrame(np.arange(20).reshape(4,5))
a

	0	1	2	3	4
0	0	1	2	3	4
1	5	6	7	8	9
2	10	11	12	13	14
3	15	16	17	18	19
b = pd.DataFrame(np.arange(20,0,-1).reshape(4,5))
b
	0	1	2	3	4
0	20	19	18	17	16
1	15	14	13	12	11
2	10	9	8	7	6
3	5	4	3	2	1
a > b
	0		1		2		3		4
0	False	False	False	False	False
1	False	False	False	False	False
2	False	True	True	True	True
3	True	True	True	True	True

当同维度进行运算时,需要保证尺寸一致,不存在填充的情况下,尺寸不同会直接报错。

c = pd.Series(np.arange(5))
c
0    0
1    1
2    2
3    3
4    4
dtype: int32
a > c
	0		1		2		3		4
0	False	False	False	False	False
1	True	True	True	True	True
2	True	True	True	True	True
3	True	True	True	True	True

可以看到,不同维度时,使用广播运算, 默认在1轴。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值