Python Pandas中Series和向量之间的区别


Pandas是一个著名的开源Python库,它提供了广泛的功能,使数据分析更有效率。Pandas包主要用于数据预处理活动,包括数据清洗、转换和操作。因此,它是分析师和数据科学家的一个非常有用的工具。本文讨论了Pandas中两个最流行的数据结构——Series和DataFrame,以及Series和向量的比较。

Python Pandas Series

在Python Pandas库中,Series是一个一维的带标签数组,可以保存任何数据类型。它类似于电子表格中的一列或R中的数据框。Series是通过将值列表传递给pd.Series()函数创建的,可以使用索引或标签访问。

标签必须是可哈希类型,但不必唯一。该对象具有多种用于处理索引的方法,并支持基于整数和标签的索引。

它具有以下参数:

  • 数据 - 任何列表、字典或标量值都可以用作数据。

  • 索引 - 索引的值应该既唯一又可哈希。它必须与数据大小相同。如果未提供索引,则默认使用np.arrange(n)。

  • Dtype - 它指的是Series的数据类型。

  • copy - 用于复制信息。

创建Series

我们可以通过四种方式创建Series:

使用Pandas库中的pd.Series函数

import pandas as pd
import numpy as np
# Create a series from a list
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

输出

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

这将创建一个Pandas Series,其值为1, 3, 5, NaN, 6, 8。

直接从NumPy数组创建Series

import numpy as np
import pandas as pd
# Create a NumPy array
data = np.array([1, 3, 5, np.nan, 6, 8])
# Create a series from the array
s = pd.Series(data)
print(s)

输出

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

这两种方法都将创建一个Pandas Series,其索引是从0开始的整数范围。您也可以在创建Series时指定自己的索引值。

从标量值创建Series

创建带有标量值的Series是今天我们将要研究的最后一种方法。在这种情况下,您可以用单个值提供数据,并使其在索引持续时间内重复。

示例

import pandas as pd
if __name__ == '__main__':
   series = pd.Series(data=3.,
      index=['a', 'b', 'c', 'd'],
      name='series_from_scalar')
   print(series)

输出

a    3.0
b    3.0
c    3.0
d    3.0
Name: series_from_scalar, dtype: float64

从ndarray创建Series

NumPy的random.randint()函数是创建填充随机数的ndarray的最简单方法之一。

示例

import numpy as np
import pandas as pd
if __name__ == '__main__':
   data = np.random.randint(0, 10, 5)
   series = pd.Series(data=data,
      index=['a', 'b', 'c', 'd', 'e'],
      name='series_from_ndarray')
   print(series)

输出

a    5
b    7
c    0
d    8
e    5
Name: series_from_ndarray, dtype: int64

DataFrame

另一方面,向量是一维数值数组。在Pandas中,向量可以用具有单个dtype(例如,整数、浮点数或对象)的Series表示。向量通常用于数学和统计运算,可以使用pd.to_numeric()函数或从数据框中选择单个列来创建。

您可以使用pd从多个数据源(包括字典、二维NumPy数组和Series)创建DataFrame。使用Pandas Series字典创建Pandas DataFrame

索引必须与Series长度相同。如果未指定索引,则将自动创建索引值:[0, …, len(data) – 1]。

#Creating a DataFrame from a dictionary of Series
import pandas as pd
data = pd.DataFrame({
   "Class 1": pd.Series([22, 33, 38], index=["math avg", "science avg",  "english avg"]),
   "Class 2": pd.Series([45, 28, 36], index=["math avg", "science avg",  "english avg"]),
   "Class 3": pd.Series([32, 41, 47], index=["math avg", "science avg",  "english avg"])
})
 
print(data)

输出

             Class 1  Class 2  Class 3
math avg          22       45       32
science avg       33       28       41
english avg       38       36       47

以下是Python Pandas中Series和DataFrame之间差异的总结

DataFrame

Series

数据结构

二维表

一维数组

可以包含异构数据

可以包含列标签

可以包含行标签

可以按列或行标签索引

可以按列或行标签切片

支持算术运算

支持算术运算

结论

总而言之,Python Pandas中Series和向量的主要区别在于:

  • Series可以保存任何数据类型,而向量只能保存数值。

  • Series具有标签索引,而向量没有。

  • Series可以使用标签或索引访问,而向量只能使用索引访问。

理解Series和向量之间的区别对于选择适合您数据的适当数据结构以及在Pandas中操作和分析数据非常有用。

更新于:2023年5月5日

866 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告