Pandas 数据结构 - Series- 让你的数据处理更加高效

导言

随着社会经济的迅速发展,数据处理成为了各行各业不可或缺的一部分。而数据处理的核心就是数据结构的处理,如何将大量的数据快速、高效地进行整理和分析,成为了我们关注的重点。而在众多的数据结构中,Pandas 的 Series 可谓是一款非常实用的数据结构,其强大的功能和使用方便性深受广大数据工作者的喜爱。

什么是 Pandas?

Pandas 是一个基于 NumPy 的 Python 数据分析库,它提供了高效的数据结构和数据分析工具。Pandas 的主要数据结构包括 Series 和 DataFrame。其中,Series 是一种一维数组(数组中的每个元素都有一定的标签,称为索引),可以存储任何类型的数据,包括数字、字符串、布尔值等等。Series 与 NumPy 中的 ndarrays 类似,但是在 Series 中,每个元素都有一个标签,可以用来访问和操作数据。

Series 的创建

创建一个 Series 非常简单,只需要传入一个 list 或者 numpy array 即可:

import pandas as pd
import numpy as np

# 从 list 中创建 Series
s1 = pd.Series([1, 3, 5, np.nan, 6, 8])

# 从 numpy array 中创建 Series
s2 = pd.Series(np.random.randn(5))

在上述代码中,我们通过 pd.Series() 创建了两个 Series,第一个是从 list 中创建的,第二个是从 numpy array 中创建的。需要注意的是,第一个 Series 中包含了一个 np.nan,这是一个特殊的值,表示缺失值。在 Pandas 中,缺失值使用 np.nan 表示。

Series 的属性

Series 有很多属性,我们来看一下其中一些常用的属性:

# Series 的值
s1.values

# Series 的索引
s1.index

# Series 的数据类型
s1.dtype

# Series 的维度
s1.ndim

# Series 的长度
s1.size

在上述代码中,我们分别使用了 values、index、dtype、ndim 和 size 属性,分别得到了 Series 的值、索引、数据类型、维度和长度。需要注意的是,values 和 index 属性都是 Series 的属性,而其他属性都是 NumPy 的属性。

Series 的索引

在 Pandas 中,Series 的索引是可以自定义的,我们可以通过 index 参数来指定索引:

# 创建一个带有自定义索引的 Series
s3 = pd.Series([1, 3, 5, np.nan, 6, 8], index=['a', 'b', 'c', 'd', 'e', 'f'])

在上述代码中,我们通过 index 参数来指定了 Series 的索引。需要注意的是,自定义索引必须与数据的长度相同,否则会报错。

我们还可以通过索引来访问 Series 中的元素:

# 访问 Series 中的元素
s3['a']

在上述代码中,我们通过索引 'a' 来访问了 Series 中的第一个元素。需要注意的是,Series 的索引既可以是整数,也可以是字符串等其他类型。

Series 的运算

Series 支持很多常见的数学运算,如加、减、乘、除等。我们来看一些例子:

# 创建两个 Series
s4 = pd.Series([1, 2, 3, 4, 5])
s5 = pd.Series([2, 3, 4, 5, 6])

# 加法运算
s6 = s4 + s5

# 减法运算
s7 = s4 - s5

# 乘法运算
s8 = s4 * s5

# 除法运算
s9 = s4 / s5

在上述代码中,我们创建了两个 Series,然后对它们进行了加、减、乘、除等运算,并将结果保存到了新的 Series 中。

Series 的缺失值处理

在实际的数据处理中,经常会遇到缺失值的情况。在 Pandas 中,我们可以使用 isnull() 和 notnull() 方法来检查 Series 中的缺失值:

# 创建一个带有缺失值的 Series
s10 = pd.Series([1, 2, np.nan, 4, 5])

# 检查缺失值
pd.isnull(s10)

# 检查非缺失值
pd.notnull(s10)

在上述代码中,我们创建了一个带有缺失值的 Series,并使用 isnull() 和 notnull() 方法来检查缺失值和非缺失值。需要注意的是,isnull() 和 notnull() 方法返回的都是布尔值。

除了检查缺失值之外,我们还可以使用 fillna() 方法来填充缺失值,使用 dropna() 方法来删除缺失值:

# 填充缺失值
s11 = s10.fillna(0)

# 删除缺失值
s12 = s10.dropna()

在上述代码中,我们使用 fillna() 方法将缺失值填充为 0,使用 dropna() 方法删除缺失值。需要注意的是,fillna() 方法返回的是一个新的 Series,而 dropna() 方法直接修改原有的 Series。

Series 的排序

在 Pandas 中,我们可以使用 sort_values() 方法来对 Series 进行排序:

# 创建一个 Series
s13 = pd.Series([1, 4, 2, 3, 5])

# 对 Series 进行排序
s14 = s13.sort_values()

在上述代码中,我们使用 sort_values() 方法对 Series 进行排序。需要注意的是,默认情况下,sort_values() 方法按照升序排序。

如果我们想要按照降序排序,可以使用 sort_values() 方法的 ascending 参数:

# 按照降序排序
s15 = s13.sort_values(ascending=False)

在上述代码中,我们将 sort_values() 方法的 ascending 参数设置为 False,表示按照降序排序。

Series 的应用

Series 可以用于许多数据处理场景,下面我们来看一些实际的应用场景。

数据清洗

在数据清洗过程中,我们经常需要对数据进行过滤、去重、替换等操作。下面是一些常见的数据清洗操作:

# 创建一个 Series
s16 = pd.Series(['apple', 'banana', 'orange', 'apple', 'pear'])

# 去除重复值
s17 = s16.drop_duplicates()

# 替换值
s18 = s16.replace('apple', 'peach')

# 过滤数据
s19 = s16[s16.str.startswith('a')]

在上述代码中,我们对一个字符串类型的 Series 进行了去重、替换和过滤操作。需要注意的是,replace() 方法返回的是一个新的 Series,而 drop_duplicates() 方法和过滤

本文来源:词雅网

本文地址:https://www.ciyawang.com/fcru9k.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐