pandas基础运算

《Python for Data Analysis》

算术运算和数据对齐

pandas可以对不同索引的对象进行算术运算。

例如:当对象相加时,如果存在不同的索引对,其结果的索引就是该索引对的并集。自动的数据对齐操作在不重叠的索引处引入了NA值。并且会在算术运算中传播。

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: from pandas import Series, DataFrame

In [4]: df1 = DataFrame(np.arange(12).reshape((3,4)),columns=list('abcd'))

In [5]: df2 = DataFrame(np.arange(20).reshape((4,5)),columns=list('abcde'))

In [6]: df1
Out[6]:
   a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

In [7]: df2
Out[7]:
    a   b   c   d   e
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19

In [8]: df1+df2
Out[8]:
      a     b     c     d   e
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

在算术方法中填充值

In [9]: df1.add(df2, fill_value=0)
Out[9]:
      a     b     c     d     e
0   0.0   2.0   4.0   6.0   4.0
1   9.0  11.0  13.0  15.0   9.0
2  18.0  20.0  22.0  24.0  14.0
3  15.0  16.0  17.0  18.0  19.0

In [10]: df1.reindex(columns=df2.columns, fill_value=0)
Out[10]:
   a  b   c   d  e
0  0  1   2   3  0
1  4  5   6   7  0
2  8  9  10  11  0

DataFrame和Series之间的运算

广播

In [12]: arr = np.arange(12).reshape((3,4))

In [13]: arr
Out[13]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [14]: arr[0]  #行
Out[14]: array([0, 1, 2, 3])

In [15]: arr - arr[0]
Out[15]:
array([[0, 0, 0, 0],
       [4, 4, 4, 4],
       [8, 8, 8, 8]])

默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下传播。series=frame.ix[0]

上例是Series取DataFrame的行,但是如果想匹配到DataFrame的行,且希望在列上传播,必须使用算术运算方法。frame.sub(series, axis=0)。传入的轴号就是希望匹配的轴。(series = frame['a']

### 头歌平台上的 Pandas 数值运算方法 在头歌平台上,Pandas 是一种非常强大的数据分析工具库,广泛用于数值计算和数据操作。以下是关于如何利用 Pandas 进行常见数值运算的一些核心方法: #### 1. 基础数值运算 Pandas 支持对 `Series` 和 `DataFrame` 的基本算术运算(加减乘除)。这些运算是逐元素执行的,并支持广播机制。 ```python import pandas as pd # 创建一个简单的 DataFrame data = {'A': [10, 20, 30], 'B': [40, 50, 60]} df = pd.DataFrame(data) # 加法运算 result_add = df['A'] + df['B'] # 减法运算 result_subtract = df['B'] - df['A'] # 乘法运算 result_multiply = df['A'] * df['B'] ``` 以上代码展示了如何通过列名访问并进行基础数值运算[^2]。 #### 2. 使用内置函数进行复杂数值分析 除了基本运算外,Pandas 提供了许多内置函数来进行更复杂的数值分析,例如求均值、标准差、最大最小值等。 - **mean**: 计算平均值 - **std**: 计算标准差 - **sum**: 对所有值求和 ```python # 计算每列的均值 mean_values = df.mean() # 计算每列的标准差 std_deviation = df.std() ``` 上述代码片段演示了如何调用 `.mean()` 和 `.std()` 来获取统计数据[^2]。 #### 3. 应用自定义函数 (apply) 对于更加灵活的数值运算需求,可以使用 `apply` 方法将用户定义的函数应用到每一行或每一列。 ```python def custom_function(x): return x**2 squared_df = df.apply(custom_function) ``` 这里展示了一个简单例子,其中我们将平方函数应用于整个 DataFrame 中的所有元素[^2]。 #### 4. 组间聚合 (GroupBy) 当需要按某些条件分组并对各组内的数据做进一步处理时,可采用 `groupby` 功能配合各种聚合操作。 假设有一个包含乘客票价 (`Fare`) 及其舱级 (`Pclass`) 的 Titanic 数据集,则可以通过如下方式实现基于舱位等级的价格汇总统计: ```python titanic_data.groupby('Pclass')['Fare'].agg(['mean', 'min', 'max']) ``` 此段脚本会返回不同 Pclass 下 Fare 列对应的平均数、最小值以及最大值信息[^3]。 #### 注意事项 尽管 Categorical 类型主要用于描述分类变量而非连续量度指标,在涉及离散类别编码场景下仍可能间接关联至特定形式下的数量关系转换逻辑之中;不过这通常不属于传统意义上的“数值”范畴讨论范围之内[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值