Pandas的两种主要数据结构:Series和DataFrame
obj=Series()参数是列表,元素,字典,数组等。
Series在算术运算中会有自动对齐不同的索引的功能,索引可以通过赋值的方式修改obj.index=['Bob','Steve']
Series可以看成是一个字典,因为他是索引值到数据值得隐射
DataFrame表格型数据结构,含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。
构建DataFrame的方法
第一、等长列表或者数组组成的字典
data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]}
frame=DataFrame(data)
获取某列的方法frame['state']或者frame.year
也可以通过位置和名称的方式进行获取ix['three']
为不存在的列赋值会创建一个新列,关键字del用于删除列
第二、常见的数据形式是嵌套字典(也就是字典的字典)外层字典的键作为列,内层的键则作为行索引
可以输入给DataFrame的构造器的数据
二维ndarray
由数组、列表或元组组成的字典:每个序列会变成DataFrame的一列
Numpy的结构化数组/记录数组:类似于“由数组组成的字典”
由Series组成的字典:每个Series会成为一列,没有显示指定索引,则各个Series的索引会被合并成结果的行索引
字典或Series的列表:字典键或Series索引成为列标
由列表或元组组成的列表:类似于二维数组
另一个DataFrame
索引对象
构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转成一个Index
每个索引都有一些方法和属性
append;diff(),intersection(),union(),isin(),delete(),drop(),insert(),unique(),is_unique(),is_monotonic
一、基本功能
1、重新索引
重要方法是reindex
obj=Series([4.5,7.2,-5.3,3.6]);obj2=reindex(['a','b','c','d','e'])
obj3.reindex(range(6),method='ffill')
reindex的method选项
ffill或pad:前向填充(搬运)值
bfill或backfill:后向填充(搬运)值
对数据框,reindex也可以修改(行)索引,列或两个都修改
仅传入一个序列,只修改索引行,使用columns关键字可重新索引列
同时对列和行进行重新索引,而插值只能按行应用
reindex函数的参数:
index,method,fill_value缺失值的替代值,limit前向或后向填充时的最大填充量
level层次化索引指定级别
2、丢弃轴上的项
drop方法obj.drop('c')
data.drop(['Colorado','Ohio'])
data.drop('two',axis=1)
3、索引,选取和过滤
切片运算时包含末端的obj['b':'c']
obj['b'], obj[['b','c','a']],obj[1],obj[2:4],obj[[1,3]],obj[obj<2]
data.ix['Colorado',['two','three']]
data.ix[2]
obj[val]:选取DataFrame的单个列或一组列
obj.ix[val]:选取DataFrame的单个行或一组行
obj.ix[:,val]:选取单个列或一组列
obj.ix[val1,val2]同时选取行和列
reindex将一个轴或多个轴匹配到新索引
xs:根据标签选取单行或单列,并返回一个Series
icol、irow根据位置整数选取单列或单行,并返回一个Series
get_value、set_value根据行标签和列标签选取单个值
3、算术运算和自动对齐
对象相加时,会根据索引匹配相加,对于不存在的索引则会引入NA值
df1.add(df2,fill_value=0)
DataFrame与Series之间的运算会将索引匹配到DataFrame的列,然后沿着行一直向下广播
二、函数应用和映射
Numpy的元素级数组方法也可以用于操作pandas
frame.apply(); applymap()
2、排序和排名
obj.sort_index()按索引排序
按值排序可以用obj.order()
排名
obj.rank(method='average','min','max','first')
三、汇总和计算描述统计
df.sum();axis约简的轴,skipna排除缺失值,level层次化索引
coun:非NA值得数量
describe:针对Series或各DataFrame列计算汇总统计
min、max计算最小值和最大值
argimn、argmax计算能够获取到最小值和最大值的索引位置(整数)
idxmin、idxmax计算能够及时获取到最小值和最大值的索引值
quantile计算样本的分位数
sum值得总和
mean值得平均数
median值得算术中位数
mad根据平均值计算平均绝对离差
var样本值的方差
std样本值的标准差
skew样本值的偏度
Kurt样本值的峰度
cummin、cummax样本值得累积最大值和最小值
cumprod样本值累计积
corr相关系数,cov协方差
3、唯一值、值计数以及成员资格
isin返回布尔型数组
unique唯一值数组
value_counts索引为唯一值,其值为频率
四、处理缺失值
1、NA处理方法
dropna根据各标签的值中是否存在缺失数据对轴标签进行过滤
fillna用指定值填充缺失数据
isnull表示哪些是缺失值
notnull
fillna函数的参数
value:用于填充缺失值得标量值或字典对象
method:插值方式,前向还是后向,默认ffill
axis:待填充的轴,默认axis=0
limit可以连续填充的最大数量
2、层次化索引
选取子集的方法
data['b'], data['b':'c'], data.ix[['b','c']]
unstack方法转化为DataFrame
stack方法把DataFrame转换为stack
3、重排分级顺序
data.swaplevel('key1','key2')
data.sortlevel(1)
data.sum(level='key2')
4、DataFrame转化为层次索引
frame.set_index(['c','d'])
frame.set_index(['c','d'],drop=False)
5、面板数据
转换为DataFrame
pdata.ix[].to_frme()
数据框转化为面板数据
frame.to_panel()