本文主要講解下python載入csv檔案的兩種方式,如果知道如何處理的就不必往下看了!
下面來簡單介紹下。
例項中的資料集是kaggle的digit recognizer的train.csv檔案,資料格式很特別也很普遍,截圖如下:
csv檔案中每行資料的每個特徵列都是用逗號「,」隔開。csv檔案中除了儲存數值外,還有一些屬性值,如第一行以及第一列的label標籤。所以在處理是需要進行相應的處理。
下面介紹下兩種載入這種csv檔案的方法
csv模組中的函式
reader(csvfile, dialect='excel', **fmtparams)
引數說明:
csvfile,必須是支援迭代(iterator)的物件,可以是檔案(file)物件或者列表(list)物件,如果是檔案對
象,開啟時需要加」b」標誌引數。
dialect,編碼風格,預設為excel的風格,也就是用逗號(,)分隔,dialect方式也支援自定義,通過呼叫register_dialect方法來註冊,下文會提到。
fmtparam,格式化引數,用來覆蓋之前dialect物件指定的編碼風格。
載入檔案**:
import csv
defloadcsvfile1
(): list_file =
with open('train.csv','rb') as csv_file:
all_lines=cvs.reader(csv_file)
for one_line in all_lines:
list_file.remove(list_file[0])
arr_file = array(list_file)
label = arr_file[:, 0]
data = arr_file[:, 1:]
return data, label
載入csv核心部分還是
其中,『rb』中的r表示「讀」模式,因為是檔案物件,所以加『b』。open()返回了乙個檔案物件
myfile,reader(myfile)只傳入了第乙個引數,另外兩個引數採用預設值,即以excel風格讀入。reader()返回乙個
reader物件all_lines,all_lines是乙個list,當呼叫它的方法lines.next()時,會返回乙個string。上面程式的效果是將csv
檔案中的文字按行列印,每一行的元素都是以逗號分隔符』,』分隔得來。
有了numpy,python對於資料的處理可以說是如虎添翼,速度也大大提公升。使用numpy首先要在前面載入numpy庫,**如下:
import numpy as np
對於上面的csv檔案,下面程式用來讀取資料部分:
def
loadcsvfile2
(): tmp = np.loadtxt("train.csv", dtype=np.str, delimiter=",")
data = tmp[1:,1:].astype(np.float)#載入資料部分
label = tmp[1:,0].astype(np.float)#載入類別標籤部分
return data, label #返回array型別的資料
三行**,很簡便。最後的結果是array型別,type為float64
**很簡單,僅供參考!
lua載入csv檔案
文章 author my name date 2013 12 16 18 52 11 csv解析 去掉字串左空白 local function trim left s return string.gsub s,s end 去掉字串右空白 local function trim right s ret...
python使用csv寫入csv檔案
沒什麼好說的,直接上 吧 with open file.csv w encoding utf 8 newline as csvfile writer csv.writer csvfile 首先是表頭 writer.writerow id name gender birthday rating 然後是...
python使用csv讀寫CSV檔案
檔案的讀 import csv with open test.csv r as csv file reader csv.reader csv file for line in reader print line 檔案的寫 import csv 表頭 file header houseinfo hou...