1. 程式人生 > >Pandas學習筆記(2)資料的處理方法

Pandas學習筆記(2)資料的處理方法

準備工作

建立一個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,用來檢測非數位置