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") #篩選某一列滿足條件的所有行