Pandas是Numpy基础上建立的新数据库,提供了一种高效的DataFrame数据结构。DataFrame本质上是一种带行标签(index)和列标签(columns)、支持相同类型数据和缺失值的多维数组。
Pandas 可以看成是增强版的NumPy结构化数组,行列都不再只是简单的整数索引,还带上了标签。这样不仅为带各种标签的数据通了便利的存储界面,还实现了许多强大的操作。
1,导入
和之前导入NumPy并使用别名一样,我们将导入Pandas并使用别名pd:
我们首先要了解Pandas的三个基本数据结构,Series,DataFrame和Index。
2,Pandas的Series对象
Pandas的Series对象是一个带索引数据构成的一维数组,可以用一个数组创建Series对象
由上可以发现,Series对象将一组数组和一组索引绑定在一起,我们可以通过values属性和index属性获取数据。
和NumPy数组一样,数据可以通过Python的中括号索引标签获取
Numpy数组通过隐式定义的整数索引获取数值,而Pandas的Series对象用一种显式定义的索引与数值关联。
显式索引的定义让Series对象拥有了更强的能力,例如,索引不再仅仅是整数,还可以是任意想要的类型,如果需要,完全可以用字符串定义索引。
我们可以认为,Pandas的Series对象是一种特殊的字典,index对应字典的key,values对应字典的values。
现在我们用python的字典直接创建一个Pandas的Series对象,使得Series对象与字典的对比更加清晰
用字典创建Series对象时,典型的字典数值获取方式仍然有效
和字典不同之处在于,Series对象还支持数组形式的操作,如切片
3,Pandas的DataFrame对象
DataFrame对象也可以看做是特殊的python字典
如果将Series类比为带灵活索引的一维数组,那么DataFrame就可以看作是一种既有灵活的行索引,又有灵活的列名的二维数组,
我们可以将DataFrame看成是有序排列的若干Series对象。
DataFrame也有一个index属性可以获取索引行标签,还有一个columns属性用于获取索引列标签。
与Series类似,我们也可以吧DataFrame看成一种特殊的字典,字典是一个键映射一个值,而DataFrame是一列映射一个Series的数据。
4,Pandas的Index对象
Series和DataFrame对象都使用便于引用和调整的显示索引,而Pandas的Index对象则不同,Index对象的索引是不可变的,我们可以将它看作是一个不可变数组或有序集合。
Index对象的不可变特性使得多个DataFrame和数组之间进行索引共享时更加安全,尤其是可以避免因修改索引时粗心大意而导致的副作用。
Pandas对象设计用于实现许多操作,如连接(join)数据集,其中会涉及许多集合操作,Index对象遵循Python标准库的集合(set)数据结构的许多习惯用法,包括并集,交集,差集等。
领取专属 10元无门槛券
私享最新 技术干货