初學Python手記#1-資料前處理(相對/絕對路徑、資料選取)

Pat Huang
5 min readApr 22, 2019

--

最近參加了百日機器學習馬拉松來學習 Python,透過每天的練習持續100天,以更好的掌握資料科學及coding的能力,深怕自己忘記及方便複習,因此隨手做了紀錄,紀錄在做題目當下所遇見的困難及如何釐清,算是個工作日誌吧。因此有任何理解錯誤歡迎立即指正!

1.相對/絕對路徑

使用路徑來匯入資料,會有兩種方式:

相對路徑

絕對路徑

在下列的表達式中,第5種為絕對路徑,也就是這個檔案最完整的路徑,從根目錄開始寫起。前4個則為相對路徑,相對路徑就是相對於目前編寫的python文件的路徑。

' / ':根目錄

' ./ ':當前同級目錄

' ../ ':上級目錄

1. open('檔名1.txt')
2. open('/data/檔名2.txt')
3. open('./data/檔名3.txt')
4. open('../data/檔名4.txt')
5. open('C:\\user\\檔名5.txt')

若目前編寫文件的路徑在C:\user\file下,則上面三種表達方式的路徑就為:

1. C:\user\file\檔名1.txt
2. C:\data\檔名2.txt
3. C:\user\file\data\檔名3.txt
4. C:\user\data\檔名4.txt
5. C:\user\檔名5.txt

然而路徑分隔符' / '與作業系統有關,在windows中,常以' / '表示相對路徑,' \ '為絕對路徑,而' \\ '為表示轉義,但在Unix則是' / '。

因此絕對路徑上若用os.path.join()來連接,該函數會用當前作業系統的路徑分隔符連接起來,方便跨平台作業。

whole_path = os.path.join(path1[, path2[, ...]])

2.資料選取

定義一個Dataframe

1)資料擷取

Pandas 使用 [] 來取得該 column 的所有資料,若要取得多個column可在[]放入list,另外,每個 column 的label也可以視為 DataFrame 的一個屬性,如下列第1、2及3式。若欲取得該 column的某幾列(row)資料,則可在第4式的[]中輸入其index。

1. data['column1']
2. data[['column1','column2']]
3. data.column1
4. data.column1[]

選取'頭''尾'特定幾筆資料可用.head( )及.tail( ),其預設顯示為5筆,可在( )填入欲顯示的資料數量。

1. data.head()
2. data.tail()

另外若要篩選出資料內的某些欄位,則可以用.iloc[]及.loc[]。其中括號裡面是先列(row)後行(column)

.iloc為index based的資料取法

.loc為label based的資料取法

在.iloc中若[]內為單一整數,取得一個 row的series,[[]]兩個括號包覆可回傳為dataframe。在.loc中若[]內為單一整數,取得一個label為其數的 row的series,[[]]兩個括號包覆可回傳為dataframe

1. data.iloc[0:2,1:3]
2. data.loc[0:1,'A':'B']

因此從上列的第1式可以取得row之index為0~1且column之index為1~2的資料。而第2式為row之label為0~1且column之label為A~B的資料。

2)資料篩選

在[]中輸入欲篩選的條件

data[data['B']>3]

3)資料分群

利用.groupby將資料資所需要的項目分群,並加上計算式,若欲分群的項目有重複項,則會依照此計算式進行資料運算。

data.groupby(by='B').mean()

程式碼

--

--

Pat Huang

A rookie in learning python. I write this work diary to record every problem I encounter.隨手做了紀錄,紀錄在做題目當下所遇見的困難及如何釐清。因此有任何理解錯誤歡迎立即指正!