当我们在处理数据时,经常需要进行算术运算。Pandas提供了一些算术运算符,如加、减、乘等,并且还具有数据对齐的功能。在这篇文章中,我们将通过实例来详细讲解pandas的算术运算和数据对齐。
算术运算
Pandas支持所有基本的算术运算符,如加、减、乘、除、求余等,并且这些运算符可以与常量、Series和DataFrame相结合。
Series之间的算术运算
当两个Series相加时,Pandas将根据索引标签对齐它们,并在对应的位置将值相加。如果两个Series中存在不同的索引标签,那么对应位置的值将为NaN。
下面是一个示例,展示了两个Series相加的过程:
import pandas as pd
s1 = pd.Series({"a": 10, "b": 20, "c": 30})
s2 = pd.Series({"a": 5, "c": 15, "d": 25})
s3 = s1 + s2
print(s3)
输出结果为:
a 15.0
b NaN
c 45.0
d NaN
dtype: float64
我们可以看出,在s1和s2之间的索引标签进行了对齐,缺失的值填充了NaN。
DataFrame之间的算术运算
当两个DataFrame相加时,Pandas会对齐它们的行和列,并在对应的位置将值相加。如果两个DataFrame中存在不同的行或列,那么对应位置的值将为NaN。
下面是一个示例,展示了两个DataFrame相加的过程:
import pandas as pd
df1 = pd.DataFrame({"a": [10, 20, 30], "b": [40, 50, 60]})
df2 = pd.DataFrame({"a": [5, 15, 25], "b": [35, 45, 55], "c": [65, 75, 85]})
df3 = df1 + df2
print(df3)
输出结果为:
a b c
0 15 75 NaN
1 35 95 NaN
2 55 115 NaN
我们可以看出,在df1和df2之间的行和列进行了对齐,缺失的值填充了NaN。
常量与Series、DataFrame之间的算术运算
当一个常量和一个Series相加时,这个常量将被广播到Series的所有元素上。
下面是一个示例,展示了常量和Series相加的过程:
import pandas as pd
s1 = pd.Series({"a": 10, "b": 20, "c": 30})
s2 = s1 + 5
print(s2)
输出结果为:
a 15
b 25
c 35
dtype: int64
当一个常量和一个DataFrame相加时,这个常量将被广播到整个DataFrame的所有元素上。
下面是一个示例,展示了常量和DataFrame相加的过程:
import pandas as pd
df1 = pd.DataFrame({"a": [10, 20, 30], "b": [40, 50, 60]})
df2 = df1 + 5
print(df2)
输出结果为:
a b
0 15 45
1 25 55
2 35 65
数据对齐
Pandas通过索引标签来对齐数据。当两个Series进行算术运算时,Pandas会在索引标签上进行对齐。如果两个Series具有相同的索引标签,那么它们将相互对齐,并进行算术运算。如果一个Series缺少一个索引标签,那么在这个索引标签处的值将填充为NaN。
下面是一个示例,展示了两个Series进行算术运算时的数据对齐过程:
import pandas as pd
s1 = pd.Series({"a": 10, "b": 20, "c": 30})
s2 = pd.Series({"a": 5, "c": 15, "d": 25})
s3 = s1 + s2
print(s3)
输出结果为:
a 15.0
b NaN
c 45.0
d NaN
dtype: float64
Pandas还可以对齐DataFrame。当两个DataFrame进行算术运算时,Pandas会在索引标签和列标签上进行对齐。如果两个DataFrame具有相同的索引标签和列标签,那么它们将相互对齐,并进行算术运算。如果一个DataFrame缺少一个索引标签或列标签,那么在这个位置处的值将填充为NaN。
下面是一个示例,展示了两个DataFrame在索引标签和列标签上进行算术运算时的数据对齐过程:
import pandas as pd
df1 = pd.DataFrame({"a": [10, 20, 30], "b": [40, 50, 60]})
df2 = pd.DataFrame({"a": [5, 15, 25], "b": [35, 45, 55], "c": [65, 75, 85]})
df3 = df1 + df2
print(df3)
输出结果为:
a b c
0 15 75 NaN
1 35 95 NaN
2 55 115 NaN
在这个例子中,由于df2缺少列标签为“c”的列,所以在df3中填充了缺失值NaN。
综上所述,Pandas提供了非常方便的算术运算和数据对齐功能。这些功能可以极大地简化数据处理的过程,使数据分析人员更加高效。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对pandas的算术运算和数据对齐实例详解 - Python技术站