一、pandas数据结构
1、Series
Series有两个属性,values和index,values表示Series对象中的数据,是只读的属性,不可通过属性赋值。index表示Series中的索引,可以通过直接赋值的方式改变,但赋值的列表长度应该与index长度相同。改变index的方式还可以通过reindex方法,调用该方法,返回一个新的Series对象,原对象不做修改。新对象中,如果索引在原对象不存在,则值为NAN,否则值为原对象中的对应值
1.1、Series大约可以通过以下三种方式创建:
i、s = Series([1,2,3,4])
ii、s = Series([1,2,3,4],index=['a','b','c','d'])
iii、s = Series({'a':1,'b':2,'c':3,'d':4})
1.2、Series还有计算中自动对齐操作,判断空值,以及数值计算中与numpy类似的用法等常见功能.
2、DataFrame
DataFrame中有index与columns两个属性,分别表示行与列的名字。index的操作方法Series类似。
创建有如上构建方式。
3、index对象
index是一个不可变对象
二、基本功能
1、重新索引
reindex函数,可以重新索引index与columns,其行为与上述所说一致。对于重新索引后出现的NaN值,可以通过method和fill_value等字段进行填充。
2、丢弃指定轴的项
drop函数,可以向其中传递单值或者列表,默认情况下其选择的是行,可以设定axis=1指定列.传递进入不存在的值会报异常.
3、索引与选取
3.1、对于series
s = Series([1,2,3,4],index=list("abcd"))
i、s['a']、s[[‘a’,'b','c']]、s['a':'c']、s[1:3]
s['a':'c']包含端点,s[1:3]不包含端点
当Series是数字索引时,s[1:3]进行的是按照索引值选取.
ii、loc、iloc、at、iat、ix等函数可用
3.2、对于DataFrame
df = DataFrame(np.arange(12).reshape((3,4)),columns=list("abcd"))
i、df['a'],d[[‘a’,'b','c']]选取列
当传入标签切片时或者布尔数组时,选取行
ii、loc、iloc、at、iat、ix方法
4、算数运算与对齐操作
当Series之间或者DataFrame之间进行算数运算的时候,index与columns与形成一个并集,它们是新的Series或者DataFrame的属性,自动的数据对齐操作在不重叠的索引上引入NaN。对于缺失值的处理可以利用add、sub、mul、div方法并且设置fill_value。Series与DataFrame进行计算,计算过程类似numpy中传播的概念。默认情况下,二者间列之间进行匹配,对于没有匹配上的计算结果为NaN,要改变成匹配行,可将axis设置为0,Series与DataFrame之间的计算无法设置fill-value填充值.
5、函数应用
5.1、numpy的元素级函数可以应用到pandas对象
5.2、可以用apply方法传递函数,来对行或者列来进行操作,通过axis来控制,返回一个值或者一个Series。
5.3、可以对applymap传入函数进行元素级操作。
6、排序与排名
6.1、sort_index,对index进行排序,对于DataFrame,利用axis来指定对行操作还是对列操作。
6.2、希望按值排序时,对于Series可以用order方法,对于DataFrame可以用sort_index()并设置by。
6.3、rank方法返回排名,对于数值相同的项,它的排名由method方法设置。对于DataFrame,可以由axis来指定行还是列。
三、汇总和计算统计描述
略
四、处理缺失数据
有四个主要的相关方法:dropna、fillna、isnull、notnull
五、层次化索引