算术运算法则
算术运算根据行列索引,补齐后运算,
运算默认产生浮点数 补齐时缺项填充NaN(空值)
二维和一维、一维和零维间为广播运算
采用+ ‐* /符号进行的二元运算产生新的对象
方法形式的运算
方法 | 说明 |
.add(d, **argws) | 类型间加法运算,可选参数 |
.sub(d, **argws) | 类型间减法运算,可选参数 |
.mul(d, **argws) | 类型间乘法运算,可选参数 |
.div(d, **argws) | 类型间除法运算,可选参数 |
比较运算法则
比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算
采用> < >= <= == !=等符号进行的二元运算产生布尔对象
pandas小结
Series = 索引+ 一维数据
DataFrame= 行列索引+ 二维数据
重新索引、数据删除、算术运算、比较运算
像对待单一数据一样对待Series和DataFrame对象
代码示例
# -*- coding: utf-8 -*- # @File : pandas_demo.py # @Date : 2018-05-20 # pandas数据类型的算术运算 import pandas as pd import numpy as np # 数据准备 a = pd.DataFrame(np.arange(12).reshape(3, 4)) print(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)) print(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 """ # 算术运算 # 自动补齐,缺项补NaN c = a + b print(c) """ 0 1 2 3 4 0 0.0 2.0 4.0 6.0 NaN 1 9.0 11.0 13.0 15.0 NaN 2 18.0 20.0 22.0 24.0 NaN 3 NaN NaN NaN NaN NaN """ d = a * b print(d) """ 0 1 2 3 4 0 0.0 1.0 4.0 9.0 NaN 1 20.0 30.0 42.0 56.0 NaN 2 80.0 99.0 120.0 143.0 NaN 3 NaN NaN NaN NaN NaN """ # fill_value参数替代NaN,替代后参与运算 e = a.add(b, fill_value=10) print(e) """ 0 1 2 3 4 0 0.0 2.0 4.0 6.0 14.0 1 9.0 11.0 13.0 15.0 19.0 2 18.0 20.0 22.0 24.0 24.0 3 25.0 26.0 27.0 28.0 29.0 """ f = a.mul(b, fill_value=10) print(f) """ 0 1 2 3 4 0 0.0 1.0 4.0 9.0 40.0 1 20.0 30.0 42.0 56.0 90.0 2 80.0 99.0 120.0 143.0 140.0 3 150.0 160.0 170.0 180.0 190.0 """ # 不同维度间为广播运算,一维Series默认在轴1参与运算 s = pd.Series(np.arange(10, 15, 1)) print(s) """ 0 10 1 11 2 12 3 13 4 14 dtype: int32 """ s1 = s -10 print(s1) """ 0 0 1 1 2 2 3 3 4 4 dtype: int32 """ b2 = b - s print(b2) """ 0 1 2 3 4 0 -10 -10 -10 -10 -10 1 -5 -5 -5 -5 -5 2 0 0 0 0 0 3 5 5 5 5 5 """ # 使用运算方法可以令一维Series参与轴0运算 s = pd.Series(np.arange(4)) print(s) """ 0 0 1 1 2 2 3 3 dtype: int32 """ b3 = b.sub(s, axis=0) print(b3) """ 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 """ # 比较运算 a = pd.DataFrame(np.arange(12).reshape(3, 4)) print(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(12, 0, -1).reshape(3, 4)) print(b) """ 0 1 2 3 0 12 11 10 9 1 8 7 6 5 2 4 3 2 1 """ # 同维度运算,尺寸一致 c = a > b print(c) """ 0 1 2 3 0 False False False False 1 False False False True 2 True True True True """ d = a == b print(d) """ 0 1 2 3 0 False False False False 1 False False True False 2 False False False False """ # 不同维度,广播运算,默认在1轴 s = pd.Series(np.arange(4)) print(s) """ 0 0 1 1 2 2 3 3 dtype: int32 """ print(a > s) """ 0 1 2 3 0 False False False False 1 True True True True 2 True True True True """ print(s > 0) """ 0 False 1 True 2 True 3 True dtype: bool """