1 快速入門(series、數據框的創建、查看、排序、選取基礎操作)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM