Python讀取資料集並消除資料中的空行
阿新 • • 發佈:2019-02-19
# -*- coding: utf-8 -*- # @ author hulei 2016-5-3 from numpy import * import operator from os import listdir import sys reload(sys) sys.setdefaultencoding('utf8') # x,y=getDataSet_dz('iris.data.txt',4) def getDataSet(filename,numberOfFeature): #將資料集讀入記憶體 fr = open(filename) numberOfLines = len(fr.readlines()) #get the number of lines in the file file.readlines()是把檔案的全部內容讀到記憶體,並解析成一個list returnMat = zeros((numberOfLines,numberOfFeature)) #prepare matrix to return 3代表資料集中特徵數目### classLabelVector = [] #prepare labels return fr = open(filename) index = 0 for line in fr.readlines(): line = line.strip() #strip() 引數為空時,預設刪除空白符(包括'\n', '\r', '\t', ' ') listFromLine = line.split(',') #split 以什麼為標準分割一次 分成陣列中的每個元素 returnMat[index,:] = listFromLine[0:numberOfFeature] #classLabelVector.append(int(listFromLine[-1])) #append() 方法向列表的尾部新增一個新的元素 if listFromLine[-1] == 'Iris-setosa' : classLabelVector.append(1) elif listFromLine[-1] == 'Iris-versicolor' : classLabelVector.append(2) else: #elif listFromLine[-1] == 'Iris-virginica' : classLabelVector.append(3) index += 1 return returnMat,classLabelVector def getDataSet_dz(filename,numberOfFeature): #改進版,可以消除資料中的空白行 numberOfLines = 0 mx = [] #將資料集 去除空行後存入 fr = open(filename) for line in fr.readlines(): line = line.strip() if line != '' : #去除空白行 numberOfLines+=1 mx.append( line.split(',') ) returnMat = zeros((numberOfLines,numberOfFeature)) classLabelVector = [] for index in range(numberOfLines) : returnMat[index,:] = mx[index][0:numberOfFeature] if mx[index][-1] == 'Iris-setosa' : classLabelVector.append(1) elif mx[index][-1] == 'Iris-versicolor' : classLabelVector.append(2) else: #elif listFromLine[-1] == 'Iris-virginica' : classLabelVector.append(3) return returnMat,classLabelVector