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中操作和分析数据非常有用。