Pandas學習筆記(2)資料的處理方法
阿新 • • 發佈:2019-02-19
準備工作
建立一個6X4的DataFrame,行索引為時間序列,列索引為字母
dates = pd.date_range('20180205',periods=6) df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates,columns=['A','B','C','D']) outputs: A B C D 2018-02-05 0 1 2 3 2018-02-06 4 5 6 7 2018-02-07 8 9 10 11 2018-02-08 12 13 14 15 2018-02-09 16 17 18 19 2018-02-10 20 21 22 23
資料的選取
按行列選取元素
以下兩種方式可選取帶索引的單列元素
df[A]
df.A #返回列標為A的元素 (Series形式)
output:
2018-02-05 0
2018-02-06 4
2018-02-07 8
2018-02-08 12
2018-02-09 16
2018-02-10 20
Freq: D, Name: A, dtype: int32
選擇多行元素
df[0:3] df[20180205:20180208] #返回前4行元素(DataFrame形式) output: A B C D 2018-02-05 0 1 2 3 2018-02-06 4 5 6 7 2018-02-07 8 9 10 11
loc
更加一般地,可以使用loc方法選取任意行列
df.loc['20180205'] #返回所在標籤的行/列
output:
A 0
B 1
C 2
D 3
Name: 2018-02-05 00:00:00, dtype: int32
df.loc['20180205',['A','B']] #對列作限定
output:
A 0
B 1
Name: 2018-02-05 00:00:00, dtype: int32
iloc
iloc可按位置精確切割選取DataFrameoutputs
df.iloc[3:5,1:3] #選取3~5行,1~3列 output: A B C D 2018-02-08 12 13 14 15 2018-02-09 16 17 18 19
引數1指定行,引數2指定列,預設用:表示選取全部
跳選使用形如[1,3,5]的引數
基於比較的選擇
可按設定條件選擇資料
df[df.A<10] #選擇列標A小於10的資料塊
output:
A B C D
2018-02-05 0 1 2 3
2018-02-06 4 5 6 7
2018-02-07 8 9 10 11
資料的修改
在選定資料後,可以通過簡單的賦值來修改所選中部分的值
df.A = 0 #將A列的所有元素都修改為0
可以新增新的列
df.E = 0 #追加全0列E
若是已經確定的Series則需保證長度對齊
缺失值的處理
初始資料為非數或缺失的部分,在轉化為DataFrame時用NaN(Not a Number)表示,對於NaN型別的資料,在分析時常常要對其進行處理,Pandas提供了相應的處理方式
pd.fillna()
使用指定引數代替非數值
df.fillna(value=0) #value指定值替換所有NaN
pd.dropna()
刪去帶有缺失值的資料項
df.dropna(axis=0,how='any')
可選引數:
- axis =0:僅對行 =1:僅對列
- how =’any’ 預設 =’all’ 僅全空
pd.isnull()
返回一個同尺寸的DataFrame,元素為True/False,用來檢測非數位置