DataFrame与Series的运算

博客介绍了Series和Dataframe的运算规则,即索引值与列名相同的项进行相加,还提及了相关函数计算,可指定axis按列执行计算,涉及的函数有add()、sub()、mul()、div()。

原则
Series索引值与Dataframe列名相同的项进行相加。

import pandas as pd

s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
df = pd.DataFrame({
    'a':[10, 20, 30, 40],
    'c':[100, 200, 300, 400],
    'b':[1000, 2000, 3000, 4000],
    'd':[10000, 20000, 30000, 40000]
})

print(df)
print('\n')
print(df+s)

运行结果
    a    c     b      d
0  10  100  1000  10000
1  20  200  2000  20000
2  30  300  3000  30000
3  40  400  4000  40000


    a     b    c      d
0  11  1002  103  10004
1  21  2002  203  20004
2  31  3002  303  30004
3  41  4002  403  40004

函数计算(可以指定axis按列执行计算)
add()、sub()、mul()、div()

import pandas as pd
s = pd.Series([1, 2, 3])
df = pd.DataFrame({
    0:[10, 20, 30, 40],
    1:[100, 200, 300, 400],
    2:[1000, 2000, 3000, 4000],
    3:[10000, 20000, 30000, 40000]
})
print(df)
print('\n')
print(df + s)
print('\n')
print(df.add(s, axis=0))

运行结果
    0    1     2      3
0  10  100  1000  10000
1  20  200  2000  20000
2  30  300  3000  30000
3  40  400  4000  40000


      0      1       2   3
0  11.0  102.0  1003.0 NaN
1  21.0  202.0  2003.0 NaN
2  31.0  302.0  3003.0 NaN
3  41.0  402.0  4003.0 NaN


      0      1       2        3
0  11.0  101.0  1001.0  10001.0
1  22.0  202.0  2002.0  20002.0
2  33.0  303.0  3003.0  30003.0
3   NaN    NaN     NaN      NaN

 

### 一维数据结构二维数据结构的对比 Pandas 中的 `Series` 是一种一维数据结构,类似于 Python 中的列表或字典,它可以存储任何类型的数据,并且每个数据项都有一个对应的索引。`Series` 的索引可以是自定义的标签,也可以是默认的整数索引。当只需要处理单列数据时,`Series` 非常有用,例如处理时间序列数据或执行基本的统计计算[^1]。 相比之下,`DataFrame` 是一种二维数据结构,它更像是一个表格,由行和列组成。每一列实际上都是一个 `Series`,这意味着 `DataFrame` 可以包含多个不同类型的 `Series`。`DataFrame` 提供了丰富的功能,如数据清洗、转换、聚合等,非常适合处理复杂的表格数据[^1]。 ### 数据类型索引机制 `Series` 通常用于存储单一类型的数据,尽管它也可以包含复杂的对象。由于它是单一列,因此 `Series` 只有一个轴的索引,也就是行索引。这种特性使得 `Series` 在进行数学运算或统计分析时非常高效。 `DataFrame` 则更为复杂,它不仅支持行索引,还支持列索引,这使得用户能够以更加灵活的方式访问和操作数据。此外,`DataFrame` 可以容纳多种不同的数据类型,例如同时包含文本和数值数据。 ### 功能适用场景 `Series` 适合用于简单的数据处理任务,如计算平均值、中位数、最大值、最小值等。它也可以作为 `DataFrame` 中的单个列来使用。对于只需要一维数据的情况,使用 `Series` 会更加直接和高效。 `DataFrame` 提供了更高级的功能,包括但不限于数据合并、分组、数据透视表等。这些功能使得 `DataFrame` 成为了处理和分析复杂数据集的理想选择。如果需要对数据进行分组、合并、重塑或者执行数据透视表操作,`DataFrame` 就显得尤为重要。 ### 创建获取 创建 `DataFrame` 的方法多种多样,可以通过字典、列表、NumPy 数组等生成。例如,可以通过传递一个字典给 `pandas.DataFrame()` 函数来创建一个新的 `DataFrame`[^2]。 ```python import pandas as pd data = {'Name': ['Tom', 'Nick', 'John'], 'Age': [20, 21, 19]} df = pd.DataFrame(data) ``` 获取 `Series` 通常涉及从 `DataFrame` 中提取特定的行或列。例如,可以通过指定列名来获取 `DataFrame` 中的某一列为 `Series`。 ```python series_b = df['Age'] ``` 此外,还可以根据值来获取索引,或者根据索引获取值,这些都是 `Series` 常见的操作方式[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值