Pandas知识点总结
Series
Seires类似一维数组,由数组及与之相关的标签组成。
Series的创建:
val=Series(['blue','red','yellow'],index=['a','b','c'])
val2=Series(np.arange(5),index=['a','b','c','d','e'])
//获取数组部分信息:
1.直接根据索引获取
print(val['b])
print(val2[[1,3]])
2.根据条件获取
print(val2[val2<3])
3.闭合切片
print(val['b':'c'])
DataFrame
DataFrame是表格型数据。
创建DataFrame:
import pandas as pd
import numpy as np
data={'state':['ohio','ohio','nevada'],'year':[2001,2003,3004],'pop':[1.3,1.4,1.5]} //设置一个数据集
df=pd.DataFrame(data,columns=['state','year','pop'],index=['one','two','three']) //创建DF
data2=pd.DataFrame(np.arange(9).reshape((3,3)),index=['a','b','c'],columns=['num1','num2','num3'])
print(df)
pop state year
0 1.3 ohio 2001
1 1.4 ohio 2003
2 1.5 nevada 3004
//获取部分信息的方法
1.根据索引提取
print(df.year) print(df['year'])
print(df.ix['three']) print(df[2]) //获取横行的方法
print(data2[:2])/ //2是指第2行
print(data.ix('a',['num1','num2']))
2.根据条件提取
print(data.num2>2) print(data2>5) //这样输出的是True或False
若要输出数值,则要写print(data[data.num2>2])
//修改
df['year']=2005
df.year=2005
df.year=np.arange(3)
//利用Series修改
val=Series([2003,2004],index=['two','three'])
df.year=val
//赋值于新列
df.economy=['105','108','12']
//重新指定索引
索引是不可以修改的,但可以通过重新引用重新制定索引
obj3=Series(['blue','purple','yellow'],index=[0,2,4])
obj4=obj3.index(range(6),method='ffill')
//删掉某一列或行
data=pd.DataFrame(np.arange(16).reshape((4,4)),index=['onio','colorado','utah','new york'],columns=['one','two','three','four'])
data.drop(['onio'])
data.drop('two',axis=1) //axis=1代表列
//相互运算
df之间使可以想加或者想见的,但是行数或者列数会相对于原来的发生变化
data=pd.DataFrame(np.arange(9).reshape((3,3)),index=list('123'),columns=['a','b','c'])
a b c
1 0 1 2
2 3 4 5
3 6 7 8
data2=pd.DataFrame(np.arange(16).reshape((4,4)),index=list('1234'),columns=['a','b','c','d'])
a b c d
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
4 12 13 14 15
data+data2
a b c d
1 0.0 2.0 4.0 NaN
2 7.0 9.0 11.0 NaN
3 14.0 16.0 18.0 NaN
4 NaN NaN NaN NaN
DF数据类型可以和Series相加
//匿名函数条件的应用
data6=pd.DataFrame(np.arange(16).reshape((4,4)),columns=list('abcd'),index=list('1234'))
a b c d
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
4 12 13 14 15
def f(x):
return Series([x.min(),x.max()],index=['min','max'])
print(data6.apply(f,axis=1))
format=lambda x: '%.2f'%x
print(data6.applymap(_format))
//排序
1.按索引排序
print(data6.sort_index())