用matlab进行xlsx表格的提取和操作
用matlab进行xlsx表格的提取和操作
- 一、数据的提取
- 二、垃圾数据的清除
- 三、数据的分类
- 四、图像的绘制
在学习数学建模时,我们会碰到大数据的问题,这类问题通常要进行数据预处理,这是我用matlab进行预处理的一些经验总结。数据预处理通常分为三步,缺失值、异常值的检测与处理,数据标椎化,数据的降维。本文我们以2020年数学建模国赛C题为例,讲解xlsx表格的提取和分类。
一、数据的提取
用xlsread函数进行数据的提取。
xlsread函数语法:
num = xlsread(filename)
num = xlsread(filename,sheet)
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
num = xlsread(filename,sheet,xlRange,‘basic’)
[num,txt,raw] = xlsread(___)
___ = xlsread(filename,-1)
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,‘’
filename:要提取的文件名(也可以是文件路径);num:返回的double型的数据矩阵(字符串类型的数据在该矩阵中显示为NaN);sheet:要提取的表格页数或页名称;xlRange:提取数据的范围,使用Excel 范围语法,例如 ‘A1:C3’;txt:在元胞数组中返回文本字段,数据类型的元素在元胞中为空值;raw:在元胞数组中返回数值数据和文本数据
- 另外在最新版本中还有readtable,readmatrix,readcell函数可以进行数据的提取,具体函数语法可以在MATLAB官网查询学习。
要处理的表格预览
观察上表格,其中既有文本数据,又有数值数据,所以我们用[num,txt,raw] = xlsread(___)提取表格中数据保证所有的数据都能够被提取。
matlab代码:[num,txt,raw] = xlsread('附件1:123家有信贷记录企业的相关数据.xlsx',2)
二、垃圾数据的清除
提取到表格中的所有数据,我们就可以用矩阵的语法对其进行操作了。可以看到表格中的最后一列中含有作废发票,故我们要将其删除,基本思路是找到第八列所有的“作废发票”返回其的行指标,将这些行删除。
- 提取出第八列
因为raw的第一行是对应列的标题,所以我们从第二行开始
L8 = raw(2:end,8)
- 找出第八列中是“作废发票”的元素
tf = strcmp('作废发票',L8);
strcmp函数可以判断字符串数组中的元素是否和给定的字符串完全相同,如果完全相同返回1,否则返回0,tf是一个和L8大小相同的double矩阵。
- 返回对应行指标并清空
index = find(tf==1);
%去除作废发票
raw(index+1,:) = [];
find函数可以返回满足括号中关系式的元素的指标,因为我们从第二行开始查找,令index+1行等于[ ],相当于对第index+1行进行删除,删除之后元胞数组的大小也变化。
三、数据的分类
数据的分类主要有两方面,一方面是公司的分类,另一方面是日期的分类,为了方便,我们将raw的每一列复制给一个变量。
L1 = raw(2:end,1);L2 = raw(2:end,2);L3 = raw(2:end,3);L4 = raw(2:end,4);
L5 = raw(2:end,5);L6 = raw(2:end,6);L7 = raw(2:end,7);L8 = raw(2:end,8);
- 找出所有的公司名称
L1对应的是第一列,即公司代号列
uni = unique(L1);
unique函数返回字符串数组中所有不同的字符串,因为其为内置的函数,字符串的出现顺序和原数组不同,后面写代码时要注意。
- 找出所有的公司名称对应的行号,将其储存在一个元胞数组里
compid = cell(length(uni),1);
for i = 1:length(uni)tf = strcmp(uni(i),L1);index = find(tf==1);compid{i} = index;
end
元胞数组的赋值应使用大括号{ },元胞数组值的提取也使用大括号,使用小括号()返回的是数据类型或一个新的元胞。
- 找出每个公司,每个月份的行号,将其储存在一个新的元胞里
L3对应的是日期列,使用unique函数,可以知道日期的跨度为4年,故我们创建一个12x4=48列的元胞,储存2016年1月至2019年12月的行号
Et = cell(length(uni),4*12);
%循环公司的坐标表
for i = 1:length(uni)for j = [2016 2017 2018 2019];for k = 1:12idcp = compid{i};logbool = strncmp(L3(idcp),sprintf('%d%s%d%s',j,'/',k,'/'),7);index = find(logbool==1);Et{i,(j-2016)*12+k} = index;endend
end
sprintf函数可以连接数字和字符串组,strncmp函数与strcmp函数类似,但其可以指定匹配的字符串的长度,如上代码规定匹配到前7个字符相同则返回1。
四、图像的绘制
至此我们已经拥有了所有公司的目录,和所有公司对应的不同月份的目录,如何使用这些目录是关键,下来我们简单的绘制一下某一公司的不同月份按时间序列的总金额、总税额的变化曲线。
- 新建一个.m文件
- 创建一个你要查找的公司对象并找到其在公司名称元胞中的位置
这里我想查找公司代号‘E17’的相关信息
company = 'E17';
id = find(strcmp(uni,company)==1);
- 创建两个数组储存月总金额、总税额
L5对应的是金额列,L6对应的是税额列
Tolmm = zeros(48,1);%金额,按月来计
Tolsm = zeros(48,1);%税额,按月来计
t1 = [L5{compid{id}}];
t2 = [L6{compid{id}}];
for i = 1:48Tolmm(i) = sum(t1(Et{id,i}));Tolsm(i) = sum(t2(Et{id,i}));
end
- 绘制折线图
plot(1:48,Tolmm,'-',1:48,Tolsm,'.-');
legend([company '的发票金额'],[company '的发票税额'],'location','northwest');
xlabel('时间/月');ylabel('金额/元');
效果展示:
本文文档和源代码地址
用matlab进行xlsx表格的提取和操作相关推荐
- matlab输出多个参数到表格固定列,matlab将excle的列提取出来?如何使用Matlab提取Excel中指定列的数据?...
MATLAB 在txt文件中怎么提取数据,并将那三列数据转化为EXCLE格式? 在matlab中 file import data number of text header lines 改成6 下一 ...
- matlab如何打开xlsx表格,matlab 读取word的表格
matlab如何从excel表格中读取数据? 展开全部 第一种方法,使用xlsread函数来读取excel中的数据第二种方法,就是把字符转化为数字,使用函数str2num MATLAB读取Excel表 ...
- matlab数据变成一列数据,matlab读取excel表格列数据-matlab导入excel后,怎么把数据提取成一列?...
怎么用matlab读取excel表格中的一列十六进制数据? x=xlsread('oillack.xls','sheet1','a1:a73') excel文件名是oillack.xls,sheet1 ...
- python提取excel数据-代码详解:使用Python从不同表格中提取数据
常用的表格数据存储文件格式--CSV,Microsoft Excel,Google Excel . Python通常称为粘合语言.这个名称归因于人们逐渐开发出的大量接口库和特征,也得益于广泛的使用和良 ...
- 使用MATLAB对于Excel表格进行处理
在数学建模中,常常需要对于Excel表格中的数据进行处理,下面利用MATLAB编程语言对于Excel表格进行处理,其中最主要的操作包括读取和写入操作. 目录 1. 读取操作 2. 写入操作 1. 读取 ...
- matlab实现xlsx文件转mat文件
matlab实现xlsx文件转mat文件 实验中常常需要将表格文件转换为mat文件进行处理,下面提供多sheet表格文件转mat文件的代码 %将xlsx文件转为mat文件,版本>R2019a c ...
- python处理表格数据教程_代码详解:使用Python从不同表格中提取数据
常用的表格数据存储文件格式--CSV,Microsoft Excel,Google Excel . Python通常称为粘合语言.这个名称归因于人们逐渐开发出的大量接口库和特征,也得益于广泛的使用和良 ...
- 用Matlab将Excel表格数据导入并绘制曲线
用Matlab将Excel表格数据导入并绘制曲线 一般流程 常见问题 一般流程 准备一个已有数据的Excel表格,一般格式为 xlsx 格式: 打开Matlab,点击菜单栏中的导入数据,选择准备好的E ...
- 提取文件名到excel表格中,如何操作?
提取文件名到excel表格中,如何操作?工作中我们经常遇到一些量大又重复的工作,例如有时候需要将大量的文件名整理到excel表格里,普通的小伙伴只知道挨个的先复制文件名,再粘贴excel表格里,需要耗 ...
最新文章
- 删除文件夹右键下的部分目录
- x265-common.h
- RedHat 脚本搭建dns服务!
- kotlin 查找id_Kotlin程序查找Sphere的体积
- 字体样式 font-family 0911
- 数据结构与算法-二叉树的名词概念与相关数据的计算
- PHP之post请求php脚本实现
- java rmi 安全管理器_Java:没有安全管理器:RMI类加载器被禁用
- iPhone 11终于没涨价但依然暴利 外媒:64GB起始容量就是个笑话
- 2018青岛ICPC ZOJ 4063: Tournament(构造)
- 51流水灯c语言程序与解释,51单片机流水灯C语言源代码
- 进销存excel_Excel做管理实在不好用,有没有免费的进销存软件?
- python视频课程百度云分享_Python开发视频百度云分享
- Qt 菜鸟的坑 QAbstractSocket::isValid()
- 无源贴片晶振四角引脚_有源晶振四个脚是如何定义的
- 一位百度AI工程师的求职经历(offer/面经/干货/感悟)
- Python绘制六边形
- ffmpeg 一条命令实现 圆形画中画效果
- Python模拟数据生成器全代码
- mp4+html+ipad无法播放,mp4文件不能在IPAD上播放