前言
pandas以NumPy为核心,使用下面这样的pandas引入约定
import pandas as pd
from pandas import Series DataFrame
Pandas的数据结构介绍
Series
obj = Series([4,-5,1,7])
obj
obj.values
obj.index
默认分配索引为从0开始的整数,当然也可以手动赋予索引值。
obj2 = Series([4,-5,1,7],index=['d','b','a','c'])
obj2
obj2['d']
与NumPy相比,Series可以通过索引访问一个元素的值。另外,NumPy中的数值运算都会保存索引和值之间对应的关系。可以将其视为一个字典,应用在各种需要字典的场合。
如果数据被存储在一个字典中,则可直接将该字典转为Series。
sdata = {'l':100,'w':300,'c':700}
obj3 = Series(sdata)
k=['l','w']
obj4 = Series(sdata,index=k)
obj4
对于很多应用而言,Series最重要的是自动对齐索引相关的数据运算。
Series本身及其index有一个name属性,该属性在与pandas其他功能相配合时非常关键。
obj4.name = 'population'
obj4.index.name = 'hh'
Series中obj4的索引可以根据需要进行就地修改。
obj.index = ['a','b','c','d']
DataFrame
DataFrame是一个表格形的数据结构,它含有一组有序的列,每一列可以是不同的值类型。DataFrame既有行索引又有列索引,可以看成由Series组成的字典(共用一个索引),面向行和面向列的操作基本上是平衡的。数据是以一个或多个二维块存放的。
构建方法:
data = {'name':['w','x','l','z'],
'year':[24,12,50,48],
'where':['h','l','l','l']}
frame = DataFrame(data)
frame.year
frame['name']
同样,在构建时,可以传入index值进行索引值的替换
新增和删除一列,如果需要对上,那就指定索引index吧。
frame['easten']=frame.year==24
frame
del frame['easten']
frame
其他属性与Series类似。
索引对象
构建Series或者DataFrame时,所用到的任何数组或其他序列的标签转换为Index。
Index对象是不可修改的,不可修改是非常重要的,它可以在多个数据间安全共享。
基本功能
重新索引
一个重要的方法是reindx,其作用是创建一个适应新索引的新对象。
obj = Series([1,2,3,4],index=['a','s','d','f'])
obj
obj2 = obj.reindex(['q','w','s','r'],fill_value=0)
obj2
丢掉指定轴上的项
new=obj2.drop('q')
new
需要注意的是,Series上切片的方法是末端包含的。
算术运算和数据对齐
默认情况下,索引数据在不重合出引入NA
obj3 = Series([1,2,3,4],index=['k','s','d','f'])
oo = obj+obj3
oo
对于DataFrame,返回的索引为相加两个DataFrame索引的并集。
填充数据。