import numpy as np
import pandas as pd
1.1 series、Dataframe的创建
s=pd.Series([1,3,np.nan,5,7]) dates=pd.date_range('19800801',periods=7)#创建时间序列 df=pd.DataFrame(np.random.randn(7,4),index=dates,columns=list('ABCD')) #np.randn函数用于返回标准正态分布中的随机数 df2 = pd.DataFrame({ 'A' : 1., 'B' : pd.Timestamp('20170102'),#利用时间戳类创建日期列 'C' : pd.Series(1,index=list(range(4)),dtype='float32'), #只要有一列指定索引即可 'D' : np.array([3] * 4,dtype='int32'), 'E' : pd.Categorical(["test","train","test","train"]), #codes 访问序号,categories访问类别数及类别名称,不过此时被转换成series类型,不能访问 'F' : 'foo' })
1.2 series、Dataframe的查看及排序
df2.dtypes #查看数据类型 df2.dtypes.value_counts()#查看各个数据类型的个数 df2.head(2)#注意函数后面加括号!,默认访问前5行数据,可指定访问行数 df2.tail(2) df2.index#获取行索引信息 df.columns#获取列索引信息 df.values#以数组形式返回df所有值 df2.describe()#只描述数字的统计情况 df2.T df.sort_index(axis=0, ascending=False)#指定排序的索引及升降序,axis=0为行索引降序排列 df.sort_index(axis=1, ascending=False)#此时为列索引升序排序 df.sort_values(by='B') #按内部子集排序,默认升序
1.3 series、Dataframe的元素选取(df[ ]方法、loc()方法、iloc()方法、ix()方法、条件选取法)
- df [ ]方法:仅做行选择或列选择
df[0:3]#直接数字访问为行访问,但是不能仅输入一个数字,因为指代不明 df['20170102':'20170103']#指定行索引访问 df['A'] df.A #同df['A'] df[['A','B']]
- loc()方法:输入index进行行列选择
df.loc[dates[0]]#先访问dates的第一个元素,传回标签,通过标签索引访问行数据 df.loc[:,['A','B']] df.loc['20170102':'20170104',['A','B']] df.loc['20170102',['A','B']] df.loc[dates[0],'A']#指定特定行特定列上的数据 df.at[dates[0],'A']#同loc
- iloc()方法:输入行列号进行选择
df.iloc[3] #iloc解决了loc不能直接传单个数字的问题,此时单个数字表示行号 df.iloc[3:5,0:2]#iloc的计数同样从0开始 df.iloc[[1,2,4],[0,2]]#iloc可指定特定行列 df.iloc[1:3,:] df.iloc[1,1] print(df.iat[1,1])#等同于iloc
- ix()方法:可同时输入index和行(列)号进行选择
df.ix[:4]#默认先选行 df.ix[:,'A'] df.ix[[1,2],'A']
- 条件选取法:获取满足条件的df
df[df.A > 0]#通过df.A快速访问列元素,A为列标签 df[df > 0] df2 = df.copy() df2['E'] = ['one', 'one','two','three','four','three']#加入新列,直接赋值 df2[df2['E'].isin(['two','four'])] #传入布尔向量进行选择 df.query("A>=2") #筛选某一列满足条件的所有行