pandas库的数据类型运算

简介: pandas库的数据类型运算算数运算法则根据行列索引,补齐运算(不同索引不运算,行列索引相同才运算),默认产生浮点数补齐时默认填充NaN空值二维和一维,一维和0维之间采用广播运算(低维元素与每一个高维元素运算)...

pandas库的数据类型运算

算数运算法则

  • 根据行列索引,补齐运算(不同索引不运算,行列索引相同才运算),默认产生浮点数
  • 补齐时默认填充NaN空值
  • 二维和一维,一维和0维之间采用广播运算(低维元素与每一个高维元素运算)
  • 采用 +-*/符号的二元运算会产生新的对象
import pandas as pd
import numpy as np

a = pd.DataFrame(np.arange(12).reshape(3, 4))
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))
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
a + b
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
a * b
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

除了使用+-*/,也可使用方法形式,好处是可以增加可选参数

  • .add(d,**argws) 类型间加法运算,可选参数
  • .sub(d,**argws) 类型间减法运算,可选参数
  • .mul(d,**argws) 类型间乘法运算,可选参数
  • .div(d,**argws) 类型间除法运算,可选参数
b.add(a,fill_value = 100) # 将a和b之间的缺失元素用100补齐并参加与运算
0 1 2 3 4
0 0.0 2.0 4.0 6.0 104.0
1 9.0 11.0 13.0 15.0 109.0
2 18.0 20.0 22.0 24.0 114.0
3 115.0 116.0 117.0 118.0 119.0
a.mul(b,fill_value = 0)
0 1 2 3 4
0 0.0 1.0 4.0 9.0 0.0
1 20.0 30.0 42.0 56.0 0.0
2 80.0 99.0 120.0 143.0 0.0
3 0.0 0.0 0.0 0.0 0.0

不同维度运算

b = pd.DataFrame(np.arange(20).reshape(4, 5))
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
c = pd.Series(np.arange(4))
c
0    0
1    1
2    2
3    3
dtype: int32
c - 10
0   -10
1    -9
2    -8
3    -7
dtype: int32
b - c # b的每一行都与c运算一遍, 二维和一维运算默认在轴1(行)发生
0 1 2 3 4
0 0.0 0.0 0.0 0.0 NaN
1 5.0 5.0 5.0 5.0 NaN
2 10.0 10.0 10.0 10.0 NaN
3 15.0 15.0 15.0 15.0 NaN
b.sub(c,axis=0) # 指定用 列 参与运算
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))
a
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
d = pd.DataFrame(np.arange(12, 0, -1).reshape(3, 4))
d
0 1 2 3
0 12 11 10 9
1 8 7 6 5
2 4 3 2 1
a > d # bool值表
0 1 2 3
0 False False False False
1 False False False True
2 True True True True
a == d
0 1 2 3
0 False False False False
1 False False True False
2 False False False False
b = pd.DataFrame(np.arange(12).reshape(3, 4))
c = pd.Series(np.arange(4))

a > c
0 1 2 3
0 False False False False
1 True True True True
2 True True True True
c > 0
0    False
1     True
2     True
3     True
dtype: bool
目录
相关文章
|
1月前
|
Python
使用 Pandas 库时,如何处理数据的重复值?
在使用Pandas处理数据重复值时,需要根据具体的数据特点和分析需求,选择合适的方法来确保数据的准确性和唯一性。
115 8
|
1月前
|
数据采集 数据挖掘 数据处理
如何使用 Pandas 库进行数据清洗和预处理?
数据清洗和预处理是数据分析中至关重要的步骤,Pandas库提供了丰富的函数和方法来完成这些任务
65 8
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
74 0
|
1月前
|
机器学习/深度学习 数据挖掘 数据处理
Pandas库
Pandas库是Python中进行数据分析和处理的强大工具,通过其丰富的功能和简洁的API,可以高效地完成各种数据处理任务,为后续的数据分析和机器学习提供了有力的支持。
|
1月前
|
数据采集 数据可视化 数据处理
Python数据科学:Pandas库入门与实践
Python数据科学:Pandas库入门与实践
|
1月前
|
Python
通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法
在金融分析领域,&quot;死叉&quot;指的是短期移动平均线(如MA5)下穿长期移动平均线(如MA10),而&quot;金叉&quot;则相反。本文介绍了一种利用Python编程语言,通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法。该方法首先计算两种移动平均线,接着确定它们的交叉点,最后检查并输出最近一次死叉及其后是否形成了金叉。此技术广泛应用于股市趋势分析。
52 2
|
1月前
|
Python
如何利用Pandas库找到最近一次死叉后未出现金叉的具体位置
在金融分析领域,&quot;死叉&quot;指短期移动平均线跌破长期移动平均线,而&quot;金叉&quot;则相反。本文介绍了一个Python示例,演示如何利用Pandas库找到最近一次死叉后未出现金叉的具体位置,包括计算移动平均线、确定交叉点、识别死叉和金叉,以及输出相关分析结果。此方法适用于各类包含收盘价数据的金融分析场景。
31 1
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
45 2
|
1月前
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
下一篇
DataWorks