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

数据处理进阶pandas入门(二)​import numpy as np import pandas as pd arr = np.arange print print seri

大家好,欢迎来到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的默认索引。运行结果如下所示。

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

通过一维ndarray创建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,运行结果如下所示。

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

通过标量创建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的值。 运行结果如下所示。

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

通过字典创建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的时候再介绍。

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

从DataFrame中创建Series

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自动保留的位数可能会有出入。

数据处理进阶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'])

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

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

标签索引

  • 切片索引

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])

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

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

切片索引

  • 布尔型索引

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入门(二)

布尔型索引

总结

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/61386.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信