python读取xls数据_python_从.mat与.xls类型文件中读取数据
從.xls類型文件中讀取數據
在寫機器學習算法的時候從UCI下載了一些數據,但是格式不是csv,而是.txt/.data,可以先用excel打開數據,在excel中將數據進行分列后導入python進行操作.
這里說說如何在python中進行簡單的.xls文件讀操作
需要用到的庫:
import xlrd
xlrd 0.9.4下載
安裝:下載后解壓,在win7下打開cmd,使用cd將路徑改為xlrd 0.9.4所在路徑,使用python setup.py install 進行裝完了。
我在http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29下載了胸腺細胞數據,數據結構是569*32,其中每行是一個細胞樣本的數據,第一列是細胞編號,第二列是細胞類型(1為benign良性,-1為malignant惡性),第3列到第32列是細胞的特征數據,比如:半徑,紋理,周長等等。如下圖所示:
數據格式
文件存為:wdbc.xls。
1.讀取xls文件
安裝好xlrd庫后,首先將xls文件讀取到python里
book = xlrd.open_workbook("wdbc.xls")
#book.nsheets可以查看到在Book對象中的文件有多少個worksheet
#book.sheet_names()可以查看sheet的名字,結果[u'wdbc']
2.取出xls的sheet
table = book.sheet_by_index(0)#通過索引順序獲取
#table = book.sheet_by_name(u'wdbc')#通過名稱獲取
3,獲取sheet的行列數
#獲取行數,結果為569
nrows = table.nrows
#獲取列數,結果為32
ncols = table.ncols
4.取出行列中數據
這里我們想分別取出細胞類型(label)數據和細胞特性數據(data),第2列為細胞類型(1為benign良性,-1為malignant惡性),第3列到第32列是細胞的特征數據。
a.取label數據
table.col_values(1)
#取行的數據是table.row_values(i)
#可以取出第二列的數據label數據,是list類型,不便于操作,需要將它轉化成array類型
label=np.array(table.col_values(1))
#print label.shape,結果為(569,)
b.取data數據
我采用的是使用for循環一列一列的取,從第3類到第32列,每取一列使用append方法添加在list里面,取完后將list轉為array。這時得到的array為(30,569),和label不對應,改為一行是一個樣本的全部特征值,需要對data取轉置
data=[]
for i in range(2,ncols):
data.append(table.col_values(i))
data=np.array(data)
#data.shape=(30,569)
data=data.T
#data.shape=(569, 30)
其實不用這么麻煩,可以直接把xls存成csv格式,在python中對csv進行操作。
import pandas as pd
data = pd.read_csv("wdbc.csv")
從.mat類型文件中讀取數據
matlab中使用的數據可能存成了.mat的格式
在python中如果要使用.mat中的數據,需要使用到
import scipy.io as sio
在此處我依舊要讀取的是.mat文件中的胸腺細胞數據,文件名train.mat,數據結構依舊包括細胞類型(label)數據和細胞特性數據(data)。
1.讀取.mat文件
data_train = sio.loadmat('train.mat')#讀出的數據是字典
2.獲取.mat文件中的有效數據
要從字典中獲得key為label與data的數據
data_train_label=data_train.get('label')#取出字典里的label
data_train_data=data_train.get('data')#取出字典里的data
3.將數據轉換成需要的格式
這里label是285行的數組,data該為(285,30)的數組
data_train_label=data_train_label.reshape(285,)
data_train_data=data_train_data.T
#使用.shape方法檢驗數據是否滿足要求
總結
以上是生活随笔為你收集整理的python读取xls数据_python_从.mat与.xls类型文件中读取数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a4j
- 下一篇: 智慧校园源码:带部署文档和接口文档+智慧