pandas切片_数据处理进阶pandas入门(二)

本文介绍了pandas库中Series的多种创建方式,包括通过一维ndarray、标量、字典以及DataFrame。此外,详细讲解了Series的索引机制,包括下标索引、标签索引、切片索引和布尔型索引,帮助读者理解如何高效地操作和筛选数据。
摘要由CSDN通过智能技术生成

回顾

在数据处理进阶pandas入门(一)中,我们介绍了pandas的基本概念、基本数据结构,并且简单了解了pandas中的两个重要数据结构Series和DataFrame。今天我们来看一下Series常用的几种创建方法以及Series的索引和切片。

Series创建方法

Series是带有标签的一维ndarray,可以存储任何数据类型的元素。其中,轴标签称为索引。

Series有多种创建方法,除了上一次内容中介绍的利用NumPy中的一维ndarray创建外,还可以通过标量、字典、pandas中的DataFrame创建,我们分别来看一下这几种创建方法。

  • 通过一维ndarray创建Series

此方法已在上述内容中有介绍,这里做个简单回顾,将一维ndarray传入pandas的Series()函数即可创建一个Series。​

import numpy as npimport pandas as pdarr = np.arange(10)print(arr)print("---------------")series = pd.Series(arr, index=list('abcdefghij'))print(series)

index为可选参数,用于修改Series的默认索引。运行结果如下所示。

09f684c707577af9d9e07624224fea1f.png

通过一维ndarray创建Series

  • 通过标量创建Series

当我们创建一组值都一样的Series时,可以直接通过标量创建,用法如下。​

import numpy as npimport pandas as pdseries = pd.Series(10, index=['a', 'b', 'c'])print(series)

给pandas的Series()函数传入一个标量和一个索引列表index,标量就是生成的Series的所有元素值,index的大小决定了生成的Series的大小,若不设置index,默认Series大小为1。上述代码我们创建了一个大小为3,值为10的Series,运行结果如下所示。

5eda77feb14c1dd6a1bc46d572c88e22.png

通过标量创建Series

  • 通过字典创建Series

Series的索引和值就类似于字典中的键值对,所以我们可以通过字典来创建Series,基本用法如下。​

import numpy as npimport pandas as pddic = {'a': 1, 'b': 2, 'c': 3, 666: 4, True:5}print(dic)print("---------------")series = pd.Series(dic)print(series)

向Series()函数传入一个字典,字典的key就是Series的索引,value就是Series的值。 运行结果如下所示。

0961cfef7e86027658883cb131cd6dd1.png

通过字典创建Series

  • 从DataFrame中创建Series

之前提到,pandas中Series与DataFrame的关系相当于NumPy中一维ndarray与二维ndarray的关系,因此,我们可以直接从DataFrame中获取Series。​

import numpy as npimport pandas as pdarr = np.arange(12).reshape(3, 4)print(arr)print("---------------")data_frame = pd.DataFrame(arr, index=[1, 2, 3])print(data_frame)print("---------------")series = data_frame[1]print(series)

我们首先创建一个DataFrame,然后使用索引即可获取一个Series。运行结果如下所示,可以看到,通过对DataFrame直接索引获取的是列的值,其实也可以通过loc和iloc方法获取行的值,只是获取行的值得到的依然是DataFrame,这里暂时不做展开,等详细介绍DataFrame的时候再介绍。

403d2855d62c5d1d8a61c992247b3cee.png

从DataFrame中创建Series

Series索引及切片

Series的索引包括下标索引、标签索引、切片索引和布尔型索引。

  • 下标索引

下标索引与一维ndarray一样,只需根据序列获取所在位置上的值即可。我们创建一个Series,然后获取第7个位置上(从0开始计)的值。这里需要特别注意的是,Series的下标索引不支持通过-1来获取最后一个位置上的值。​

import numpy as npimport pandas as pdarr = np.random.rand(10)series = pd.Series(arr, index=list('abcdefghij'))print(series)print("---------------")print(series[6])print(type(series[6]))print(series[6].dtype)

运行结果如下所示。我们打印了获取的值的数据类型,可以看到,Series存储浮点型数据时自动保留了6位小数。事实上,pandas对浮点型数据的存储都会自动保留一定的小数位数,不同版本的pandas自动保留的位数可能会有出入。

e48ffc75650b42252c419fd28871e419.png

下标索引

  • 标签索引

Series的标签特性使它也可以通过标签进行索引,用法就类似于字典,传入标签索引即可获取对应的值。 ​

import numpy as npimport pandas as pdarr = np.random.rand(10)series = pd.Series(arr, index=list('abcdefghij'))print(series)print("---------------")print(series[6])print(series['g'])

运行结果如下所示,通过下标索引和标签索引都能获取到对应的值。

c8ad9d411fc91ce0265a92fab12cd861.png

标签索引

  • 切片索引

Series的切片索引与ndarray中的切片索引用法基本一致,区别在于Series的切片索引除了使用下标外还可以对标签进行切片。另外,虽然Series的下标索引不能使用-1,但是在切片中是可以使用-1来表示最后一个位置的。​

import numpy as npimport pandas as pdarr = np.random.rand(5)series = pd.Series(arr2, index=list('edcba'))print(series)print("---------------")print(series[1:3])print("---------------")print(series['d':'b']) # 包含末端print("---------------")print(series[:-1])

通过对下标切片或对标签切片都可以进行切片索引,但是需要注意两者间的区别,对下标切片索引时,是包头去尾的,即包括小的,不包括大的,而对标签切片索引时,是包含末端的。运行结果如下所示。

76775cc10cd875fd5de447908e22b299.png

切片索引

  • 布尔型索引

Series的布尔型索引与NumPy中布尔型索引的功能一样,会取出满足条件的值组成一个新的Series。基本用法如下。​

import numpy as npimport pandas as pdarr = np.random.rand(5)series = pd.Series(arr)print(series)print("---------------")bool = series > 0.5print(bool)print("---------------")print(series[bool])

运行结果如下所示。

a125ae81aaf82cf20161cf3053b0f0c5.png

布尔型索引

总结

以上介绍了pandas中Series的几种常用创建方法以及Series的下标索引、标签索引、切片索引和布尔型索引。感谢大家的关注,欢迎批评指正,一起交流~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值