大家好,欢迎来到IT知识分享网。
回顾
在数据处理进阶pandas入门(一)中,我们介绍了pandas的基本概念、基本数据结构,并且简单了解了pandas中的两个重要数据结构Series和DataFrame。今天我们来看一下Series常用的几种创建方法以及Series的索引和切片。
Series创建方法
Series是带有标签的一维ndarray,可以存储任何数据类型的元素。其中,轴标签称为索引。
Series有多种创建方法,除了上一次内容中介绍的利用NumPy中的一维ndarray创建外,还可以通过标量、字典、pandas中的DataFrame创建,我们分别来看一下这几种创建方法。
- 通过一维ndarray创建Series
此方法已在上述内容中有介绍,这里做个简单回顾,将一维ndarray传入pandas的Series()函数即可创建一个Series。
import numpy as np import pandas as pd arr = np.arange(10) print(arr) print("---------------") series = pd.Series(arr, index=list('abcdefghij')) print(series)
index为可选参数,用于修改Series的默认索引。运行结果如下所示。
- 通过标量创建Series
当我们创建一组值都一样的Series时,可以直接通过标量创建,用法如下。
import numpy as np import pandas as pd series = pd.Series(10, index=['a', 'b', 'c']) print(series)
给pandas的Series()函数传入一个标量和一个索引列表index,标量就是生成的Series的所有元素值,index的大小决定了生成的Series的大小,若不设置index,默认Series大小为1。上述代码我们创建了一个大小为3,值为10的Series,运行结果如下所示。
- 通过字典创建Series
Series的索引和值就类似于字典中的键值对,所以我们可以通过字典来创建Series,基本用法如下。
import numpy as np import pandas as pd dic = {'a': 1, 'b': 2, 'c': 3, 666: 4, True:5} print(dic) print("---------------") series = pd.Series(dic) print(series)
向Series()函数传入一个字典,字典的key就是Series的索引,value就是Series的值。 运行结果如下所示。
- 从DataFrame中创建Series
之前提到,pandas中Series与DataFrame的关系相当于NumPy中一维ndarray与二维ndarray的关系,因此,我们可以直接从DataFrame中获取Series。
import numpy as np import pandas as pd arr = 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的时候再介绍。
Series索引及切片
Series的索引包括下标索引、标签索引、切片索引和布尔型索引。
- 下标索引
下标索引与一维ndarray一样,只需根据序列获取所在位置上的值即可。我们创建一个Series,然后获取第7个位置上(从0开始计)的值。这里需要特别注意的是,Series的下标索引不支持通过-1来获取最后一个位置上的值。
import numpy as np import pandas as pd arr = 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自动保留的位数可能会有出入。
- 标签索引
Series的标签特性使它也可以通过标签进行索引,用法就类似于字典,传入标签索引即可获取对应的值。
import numpy as np import pandas as pd arr = np.random.rand(10) series = pd.Series(arr, index=list('abcdefghij')) print(series) print("---------------") print(series[6]) print(series['g'])
运行结果如下所示,通过下标索引和标签索引都能获取到对应的值。
- 切片索引
Series的切片索引与ndarray中的切片索引用法基本一致,区别在于Series的切片索引除了使用下标外还可以对标签进行切片。另外,虽然Series的下标索引不能使用-1,但是在切片中是可以使用-1来表示最后一个位置的。
import numpy as np import pandas as pd arr = 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])
通过对下标切片或对标签切片都可以进行切片索引,但是需要注意两者间的区别,对下标切片索引时,是包头去尾的,即包括小的,不包括大的,而对标签切片索引时,是包含末端的。运行结果如下所示。
- 布尔型索引
Series的布尔型索引与NumPy中布尔型索引的功能一样,会取出满足条件的值组成一个新的Series。基本用法如下。
import numpy as np import pandas as pd arr = np.random.rand(5) series = pd.Series(arr) print(series) print("---------------") bool = series > 0.5 print(bool) print("---------------") print(series[bool])
运行结果如下所示。
总结
以上介绍了pandas中Series的几种常用创建方法以及Series的下标索引、标签索引、切片索引和布尔型索引。感谢大家的关注,欢迎批评指正,一起交流~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/61386.html