Pandas数据类型运算
算术运算法则:
1.算术运算根据行列索引,补齐后运算,运算默认产生浮点数。
2.补齐时缺项填充NaN(空值)。(标签相同的进行运算,标签不同的补齐)
3.二维和一维,一维和零维间为广播运算。
4.采用+-*/符号进行的二元运算产生新的对象。
1 import pandas as pd 2 import numpy as np 3 4 a=pd.DataFrame(np.arange(12).reshape(3,4)) 5 6 a 7 Out[3]: 8 0 1 2 3 9 0 0 1 2 3 10 1 4 5 6 7 11 2 8 9 10 11 12 13 b=pd.DataFrame(np.arange(20).reshape(4,5)) 14 15 b 16 Out[6]: 17 0 1 2 3 4 18 0 0 1 2 3 4 19 1 5 6 7 8 9 20 2 10 11 12 13 14 21 3 15 16 17 18 19 22 23 a+b 24 Out[7]: 25 0 1 2 3 4 26 0 0.0 2.0 4.0 6.0 NaN 27 1 9.0 11.0 13.0 15.0 NaN 28 2 18.0 20.0 22.0 24.0 NaN 29 3 NaN NaN NaN NaN NaN 30 31 a*b 32 Out[8]: 33 0 1 2 3 4 34 0 0.0 1.0 4.0 9.0 NaN 35 1 20.0 30.0 42.0 56.0 NaN 36 2 80.0 99.0 120.0 143.0 NaN 37 3 NaN NaN NaN NaN NaN #标签相同的进行运算,不同的补齐后运算,补齐的NaN与任何元素运算结果都是NaN
数据的算术运算之方法形式的运算
# 分别对应加减乘除,可以增加一些个性参数,只能针对方法性操作才有用
1 a.add(b,fill_value=100) # 用100补齐代替NaN 2 Out[9]: 3 0 1 2 3 4 4 0 0.0 2.0 4.0 6.0 104.0 5 1 9.0 11.0 13.0 15.0 109.0 6 2 18.0 20.0 22.0 24.0 114.0 7 3 115.0 116.0 117.0 118.0 119.0 8 9 b.add(a,fill_value=100) 10 Out[10]: 11 0 1 2 3 4 12 0 0.0 2.0 4.0 6.0 104.0 13 1 9.0 11.0 13.0 15.0 109.0 14 2 18.0 20.0 22.0 24.0 114.0 15 3 115.0 116.0 117.0 118.0 119.0 16 17 a.sub(b,fill_value=100) 18 Out[11]: 19 0 1 2 3 4 20 0 0.0 0.0 0.0 0.0 96.0 21 1 -1.0 -1.0 -1.0 -1.0 91.0 22 2 -2.0 -2.0 -2.0 -2.0 86.0 23 3 85.0 84.0 83.0 82.0 81.0 24 25 b.sub(a,fill_value=100) 26 Out[12]: 27 0 1 2 3 4 28 0 0.0 0.0 0.0 0.0 -96.0 29 1 1.0 1.0 1.0 1.0 -91.0 30 2 2.0 2.0 2.0 2.0 -86.0 31 3 -85.0 -84.0 -83.0 -82.0 -81.0
不同维度间为广播运算,一维Series默认在轴1(横轴每一行)参与运算
1 b 2 Out[13]: 3 0 1 2 3 4 4 0 0 1 2 3 4 5 1 5 6 7 8 9 6 2 10 11 12 13 14 7 3 15 16 17 18 19 8 9 c=pd.Series(np.arange(4)) 10 11 c 12 Out[15]: 13 0 0 14 1 1 15 2 2 16 3 3 17 dtype: int32 18 19 c-10 20 Out[16]: 21 0 -10 22 1 -9 23 2 -8 24 3 -7 25 dtype: int32 26 27 b-c 28 Out[17]: 29 0 1 2 3 4 30 0 0.0 0.0 0.0 0.0 NaN 31 1 5.0 5.0 5.0 5.0 NaN 32 2 10.0 10.0 10.0 10.0 NaN 33 3 15.0 15.0 15.0 15.0 NaN # 默认在轴1运算,即每一行都减去一维值
1 b.sub(c,axis=0) #可通过方法运算规定运算轴,使得每一列运算 2 Out[18]: 3 0 1 2 3 4 4 0 0 1 2 3 4 5 1 4 5 6 7 8 6 2 8 9 10 11 12 7 3 12 13 14 15 16
比较运算法则
1.比较运算只比较相同维度的的元素,不进行补齐。
2.二维和一维、一维和零维之间进行广播运算。
3.采用><>=<===!=等符号进行的二元运算产生布尔对象。
1 a 2 Out[22]: 3 0 1 2 3 4 0 0 1 2 3 5 1 4 5 6 7 6 2 8 9 10 11 7 8 c 9 Out[23]: 10 0 0 11 1 1 12 2 2 13 3 3 14 dtype: int32 15 16 a>c 17 Out[24]: 18 0 1 2 3 19 0 False False False False #不同维度,广播运算,默认在一轴 20 1 True True True True 21 2 True True True True