Pandas DataFrame 資料擷取

Python Coding
3 min readJun 26, 2018

--

Pandas DataFrame是一個表格式的資料型態,非常類似NumPy中的2D array,然而在NumPy array中所有資料型態必須是同一型態(type),而DataFrame則沒有資料型態必須一致的限制。

而我們有時候也會需要從DataFrame表格中擷取部分資料來使用,因此接下來就是討論一些擷取資料的方法。

擷取Pandas DataFrame的方式主要有三種:中括號 ([ ], square bracket)、iloc和loc。

中括號的使用方式很類似python在其他資料型態,如list,的使用方式。iloc和loc則是Pandas特別的方法,而iloc和loc的差別是在選取資料的方式:iloc是透過資料的index來選取,而loc則是利用label來選取。

以下例子我們先轉換一組dictionary型態的數據為DataFrame型態。

Square bracket — Column access

首先示範用中括號來選取column:

其中值得注意的是如果使用單一個中括號,回傳的資料型態會是Pandas Series(可以想像為能加入標籤的NumPy 1D array);若使用兩個中括號則回傳的資料型態則是DataFrame。幾個中括號-回傳資料型態這部分在下面的iloc和loc也是一樣的情形。

Square bracket — Row access

用中括號最大的缺點是無法同時選擇row和column,因此而出現了iloc和loc這兩個功能。

loc (label-based)

loc是一個基於標籤(label)的選取模式,在例子中,我們就是利用Ma, Tsai, Hometown, Age等等這些標籤來作選取。

iloc (index-based)

iloc則是基於index來選取資料,因此是使用0,1,2,3..來取代標籤。

結論整理

Square brackets:

  • column access: dataframe[[‘col_name’] ]
  • row access: dataframe[row_index:row_index]

iloc or loc:

  • column access: dataframe.loc[:, [‘col_name’]]
  • row access: dataframe.loc[[row_name],]
  • row&column access: dataframe[[row_name],[col_name]]

--

--