背景
Numpy 提供的最重要的数据结构是 ndarray,它是 Python 中 list 的扩展。
Pandas 提供了两种非常重要的数据结构 Series和DataFrame。
Numpy 中的一维数组与 Series 相似,一维数组只是提供了从0开始与位置有关的索引,而Series除了位置索引之外还可以附加额外的索引。本文将从对象的创建、属性的访问、数据的获取以及常用方法等方面来总结这两种结构的异同。
1. 如何创建对象
1.1 创建一维数组对象
- 通过 list或tuple 创建一维数组。
- 通过数值范围来创建一维数组,比如
linspace()
函数,返回指定间隔内的等间隔数字。arange()
函数,返回给定间隔内的均匀间隔的值。
import numpy
1.2 创建Series对象
Series 可以看作是能够附加索引的一维数组,所以可以像 Numpy 创建一维数组一样使用 list或tuple 来创建,甚至可以使用 Numpy的一维数组 直接创建。
- 通过列表
list
、元组tuple
创建Series
。 - 通过 Numpy 创建
Series
。
另外,Series 可以附加索引,所以可以在创建的时候直接指定需要附加的索引,以及利用字典的key-value
键值对 来直接创建。
- 通过指定
index
关键字的方式创建带有自定义索引的Series
。 - 通过字典
dict
创建Series
。
import pandas
2. 如何获取属性
2.1 获取一维数组对象属性
在使用 Numpy 时,有时会想知道数组的某些信息,可以通过以下属性来得到:
numpy.ndarray.ndim
用于返回数组的维数(轴的个数)也称为秩,一维数组的秩为 1,二维数组的秩为 2,以此类推。numpy.ndarray.shape
表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即ndim
属性(秩)。numpy.ndarray.size
数组中所有元素的总量,相当于数组的shape
中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。numpy.ndarray.dtype
ndarray
对象的元素类型。
import numpy
2.2 获取Series对象属性
Series 除了拥有 Numpy 中ndim
、size
、shap
、dtype
属性外,还拥有下列属性:
index
附加的索引values
存储的数据name
对象的名称
import pandas
3. 如何获取数据
3.1 获取一维数组对象数据
一维数组只有默认的位置索引,即从0开始的索引,所以获取数据只有通过位置索引这一种方式。
- 通过整数索引(要获取数组的单个元素,指定元素的索引即可。)
- 通过切片索引(切片操作是指抽取数组的一部分元素生成新数组。)
- 通过整数数组索引(方括号内传入多个索引值,可以同时选择多个元素。)
- 通过布尔索引(通过一个布尔数组来索引目标数组。)
import numpy
3.2 获取Series对象数据
因为不附加索引的 Series 也拥有位置索引,所以可以延用一维数组获取数据的方式。另外 Series 也可以通过附加索引来获取数据。
- 通过位置获取数据
- 通过索引获取数据
- 通过
head()
和tail()
获取数据
import pandas
4. 基本运算
4.1 查看描述性统计数据
一维数组对象
描述性统计分析最常见的函数如下:
numpy.min()
函数:返回数组的最小值或沿轴的最小值。numpy.max()
函数:返回数组的最大值或沿轴的最大值。numpy.quantile()
函数:计算沿指定轴的数据的分位数。numpy.median()
函数:沿指定轴计算中位数。返回数组元素的中位数。numpy.mean()
函数:计算沿指定轴的算术平均值。numpy.std()
函数:计算沿指定轴的标准偏差。
import numpy
Series对象
除了一维数组所提供的函数之外,Series也提供了更多的函数用于描述性统计分析。
import pandas
4.2 数学运算
一维数组对象
numpy.add()
函数:按元素相加。numpy.subtract()
函数:按元素相减。numpy.multiply()
函数:按元素相乘。numpy.divide()
函数:返回输入的实际除法(按元素)。numpy.floor_divide()
函数:返回小于或等于输入除法的最大整数(地板除)。numpy.power()
函数:按元素做幂运算。
在 Numpy 中对以上函数进行了运算符的重载,且运算符为 元素级。也就是说,它们只用于位置相同的元素之间,所得到的运算结果组成一个新的数组。
import numpy
Series对象
Series 与 Numpy 中的一维数组一样支持常用运算符的重载,并且可以把 Series对象 作为参数带入到 Numpy 的数学运算中。
numpy.sqrt()
函数:按元素返回数组的非负平方根。numpy.log()
函数:按元素取自然对数。
import pandas
4.3 其它运算
由于 Series 可以附加索引,所以两个 Series对象 进行相加的时候,必须满足索引对齐。另外,Series 可以通过to_numpy()
方法转化成 Numpy 的一维数组。
import pandas
总结
我们通过实例从对象的创建、属性的获取、数据的访问以及常用函数等维度对比了 Numpy 的一维数组和 Pandas 的 Series 结构。很多知识都是相通的,多对比多总结就会对整个模块有更深入的了解。今天就到这里吧,See You。
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码: