第十六天
Pandas数值运算方法
Numpy的基本功能之一是快速对每个元素进行运算,即包括基本算术,也包括更复杂的运算。Pandas继承了Numpy的功能。
但是Pandas也实现了一些高效技巧:对于一元运算(像函数与三角函数),这些通用函数将在输出结果中保留索引和列标签;而对于二元运算(如加法和乘法),Pandas 在传递通用函数时会自动对齐索引进行计算。这就意味着,保存数据内容与组合不同来源的数据——两处在NumPy 数组中都容易出错的地方——变成了Pandas 的杀手锏。
一、通用函数:保留索引
因为Pandas 是建立在NumPy 基础之上的,所以NumPy 的通用函数同样适用于Pandas 的Series 和DataFrame 对象。
import pandas as pd
import numpy asnp
rng = np.random.RandomState(42)
ser = pd.Series(rng.randint(0, 10, 4))
ser
#
0 6
1 3
2 7
3 4
dtype: int64
df = pd.DataFrame(rng.randint(0, 10, (3, 4)),columns=['A','B','C','D'])
df
#
A B C D
0 6 9 2 6
1 7 4 3 7
2 7 2 5 4
如果对这两个对象的其中一个使用NumPy 通用函数,生成的结果是另一个保留索引的Pandas 对象:
np.exp(ser)
#
0 403.428793
1 20.085537
2 1096.633158
3 54.598150
dtype: float64
或者,再做一个比较复杂的运算:
np.sin(df * np.pi / 4)
#
A B C D
0 -1.000000 7.071068e-01 1.000000 -1.000000e+00
1 -0.707107 1