为什么要使用 Series 而不是 Numpy 数组?

问题描述 投票:0回答:1

系列被标记为一维数组,我们一般在 numpy 中都有数组。为什么我应该使用其中一种而不是另一种?我在寻找答案时也遇到了这些陈述 - “Pandas Series 旨在处理标记数据。Series 中的每个元素都有一个标签(索引),这使得可以轻松地将数据与有意义的标签或名称关联起来。” “在执行加法、减法或连接等操作时,Pandas Series 会根据标签自动对齐数据。在处理来自不同来源的数据时,这种对齐方式非常有用。”

我想我不明白。特别是关于标签的第一点。我的意思是,我们可以看到系列中的标签,但是“指定处理标记数据”是什么意思?我如何知道哪些数据被标记了?数据是否具有足以称为标记数据的索引?那么数组一般都有与元素关联的索引,那又如何呢?

关于第二条语句,数组通常不会将数据与其标签(索引)对齐吗?例如,在 numpy 中,当我在数组上应用 ufunc 时,它是根据对齐来执行任务,还是不?

python arrays pandas numpy series
1个回答
0
投票

对齐措辞可能有点尴尬 - 它们的意思是在 pandas 中,行由索引列(标签)中的相似值关联,这些值可能不是简单数字顺序 0、1、2 等的整数...

在 numpy 中,没有明确的索引。当您指定索引时,numpy 会根据所包含对象的大小及其维度进行简单计算,以定位值在内存中的位置。

假设我从多个来源获得有关农场动物的信息,但这些来源以不同的顺序列出动物。 Pandas 将通过索引(标签)中的值来匹配

Series
值。无论位置如何,“cows”都会转到另一个数组中的“cows”。

熊猫

import pandas as pd

df1 = pd.Series([1,2,3,4], 
    index=["cows", "pigs", "horses", "goats"])
df2 = pd.Series([1,2,3,4], 
    index=["goats", "horses", "pigs", "cows"])
print("series")
print(df1 + df2)

输出

series
cows      5
goats     5
horses    5
pigs      5
dtype: int64

numpy 会失去指定动物与其值之间的关联,并会天真地根据位置执行操作。

import numpy as np

arr1 = np.array([1,2,3,4])
arr2 = np.array([1,2,3,4])
print("array")
print(arr1 + arr2)

输出

array
[2 4 6 8]

numpy 通常更快,而 pandas 功能更丰富。

© www.soinside.com 2019 - 2024. All rights reserved.