一.创建对象
1.可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引
s = pd.Series([1,3,5,np.nan,6,8])
2.通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
dates = pd.date_range('20130101',periods=6)
3.通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame
df = pd.DataFrame({'A':1,
'B':pd.Timestamp('20130201'),
'C':pd.Series(1,index=list(range(4),dtype='float21'),
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(["test","train","test","train"]),
'F':'foo'})
4.查看不同列的数据类型
df.dtypes
二.查看数据
1.查看DataFrame中头部和尾部的行
df.head()
df.tail(3)
2.显示索引,列和底层的numpy数据
df.index
df.columns
df.values
3.describe()函数对于数据的快速统计汇总
df.describe()
4.对数据的转置
df.T
5.按轴进行排序
df.sort_index(axis=1,ascending=False)
6.按值进行排序
df.sort_values(by='B')
三.选择
获取
1.选择一个单独的列,这将会返回一个Series,等同于df.A
df['A']
2.通过[ ]进行选择,这将会对行进行行切片
df[0:3]
通过标签选择
1.使用标签来获取一个交叉的区域
df.loc[date[0]]
2.通过标签来在多个轴上进行选择
df.loc[:,['A','B']]
3.标签切片
df.loc['20130102':'20130104',['A','B']]
4.对于返回的对象进行维度缩减
df.loc['20130102',['A','B']]
5.获取一个标量
df.loc[dates[0],'A']
6.快速访问一个标量(与上一个方法等价)
df.loc[date[0],'A']
通过位置选择
1.通过传递数值进行位置选择(选择的是行)
df.iloc[3]
2.通过数值进行切片
df.iloc[3:5,0:2]
3.通过指定一个位置的列表
df.iloc[[1,2,4],[0,2]]
4.对行进行切片
df.iloc[1:3,:]
5.对列进行切片
df.iloc[:,1:3]
6.获取特定的值
df.iloc[1,1]
#快速访问标量
df.iat[1,1]
布尔索引
1.使用一个单独列的值来选择数据
df[df.A > 0]
2.使用where操作来选择数据
df[df > 0]
3.使用isin()方法来过滤
df2 = df.copy()
df2['E'] = ['one','one','two','three','four','three']
df2[df2['E'].isin(['two','four'])]
四.缺失值处理
1.reindex()方法可以对特定轴上的索引进行改变/增加/删除操作,这将返回原始数据的一个拷贝
df1 = df.reindex(index=dates[0:4],columns=list(df.columns)+['E'])
df1.loc[dates[0]:date[1],'E'] = 1
2.去掉包含缺失值的行
df1.dropna(how='any')
3.对缺失值进行填充
df1.fillna(value=5)
4.对数据进行布尔填充
pd.isnull(df1)
五.相关操作
统计
1.执行描述性统计
df.mean()
2.在其它轴上进行相同的操作
df.mean(1)
3.对于拥有不同维度,需要对齐的对象进行操作,pandas会自动沿着指定的维度进行广播
s = pd.Series([1,3,5,np.nan,6,8],index=dates).shift(2)
df.sub(s,axis='index')
apply
df.apply(np.cumsum)
df.apply(lambda x:x.max() - x.min())
六.合并
concat
pieces = [df[:3],df[3:7],df[7:]]
pd.concat(pieces)
merge
pd.merge(left,right,on='key')
append
df.append(s,ignore_index=True)
七.分组
1.分组并对每个分组执行sum函数
df.groupby('A').sum()
2.通过多个列进行分组形成一个层次索引,然后执行函数
df.groupby(['A','B']).sum()