pandas 为什么要在NumPy数组上进行series?[已关闭]

lawou6xi  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(88)

已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

2天前关闭。
Improve this question
系列被标记为1d数组,我们通常在NumPy中有数组。我为什么要用一个而不是另一个?我在寻找答案时也遇到了这些陈述:
Pandas系列旨在处理标记数据。Series中的每个元素都有一个标签(索引),这使得将数据与有意义的标签或名称相关联变得很容易。
Pandas Series在执行加法、减法或连接等操作时,会根据标签自动对齐数据。在处理来自不同来源的数据时,这种对齐非常有用。
我想我不明白。特别是关于标签的第一点。我的意思是,是的,我们可以看到系列中的标签,但是 “指定处理带标签的数据” 是什么意思?我怎么知道哪些数据被标记了?数据是否有足够的索引来称之为标记数据?那么数组一般都有与元素相关联的索引,那又如何呢?
关于第二个语句,数组一般不都是将数据与它们的标签(索引)对齐吗?例如,在NumPy中,当我在数组上应用ufunc时,它是基于对齐来执行任务的,或者不是?

xzlaal3s

xzlaal3s1#

对齐措辞可能有点笨拙-它们的意思是,在pandas中,行由索引列(标签)中的类似值关联,这些值可能不是简单数字顺序的整数0,1,2等。
在numpy中,没有显式索引。指定索引时,numpy会根据所包含对象的大小及其维度进行简单计算,以定位值在内存中的位置。
假设我有来自几个来源的关于农场动物的信息,但是这些来源以不同的顺序列出了动物。Pandas将通过索引(标签)中的值匹配Series值。“cows”会转到另一个数组中的“cows”,而不管位置如何。
Pandas

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

输出

  1. series
  2. cows 5
  3. goats 5
  4. horses 5
  5. pigs 5
  6. dtype: int64

numpy将丢失命名动物与其值之间的关联,并将天真地执行基于位置的操作。

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

输出

  1. array
  2. [2 4 6 8]

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

展开查看全部

相关问题