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方法检验数据是否满足要求
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容