matlab 连续导入多个excel文件并分别保存变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 连续导入多个excel文件并分别保存变量相关的知识,希望对你有一定的参考价值。
我现在有n个excel文件,我想把他们导入到matlab里去,然后每个excel文件生成一个变量,然后将生成的n个变量分别保存成n个.mat文件,我弄了如下代码,可是不成功啊,求大大指导。
for i = 1:20
file_header = 'Device_';
file_number = num2str(i);
file_suffix = '_Volts.xlsx';
file_name = [file_header file_number file_suffix];
if (i<10)
filename = [file_header '0' file_number file_suffix];
else
file_name = [file_header file_number file_suffix];
end
devicei = importfile(file_name);
save('Devicei','devicei);
end
运行到导入命令的时候,如果我用device(i)=importfile(file_name), matlab会报错说
In an assignment A(I) = B, the number of elements in B and I must be the same.
如果我用devicei=importfile(file_name), 会生成一个cell,里面有全部的变量。。但不是分别的变量,怎么样把这些变量分离出来呢?
格式为:
[num,txt,raw] = xlsread(filename,sheet);
其中 num, txt和raw 分别是 数据,文本和未分类处理的所有信息。
filename是文件名,比如你的文件为 table1.xls,文件名写 'table1.xls',
sheet表示excel的第几个表格。追问
其实我的问题不在importfile上,是在如果我用device{i}=importfile(file_name),就会生成struct结构或者cell结构,不是我想要的变量名为device1到device n的多个变量。我想生成device 1 = importfile (file1),device2 = importfile(file2).....其中每个device都是一个变量,变量的内容则是xls文件file1,2,3,4...中的mxn矩阵
本回答被提问者和网友采纳 参考技术B 你的file_name是有问题的,你的本意应该是file_header,file_number,file_name这三个字符串的合并在一起组成file路径,但是你现在file_name = [file_header file_number file_suffix];就变成是一个由三个字符串组成的数组了。应该用file_name =strcat(file_header,file_number,file_suffix);满意请采纳,不懂可追问,谢谢! 参考技术C filename 是一个字符串,你现在是字符数组,当然不对,你要用 strcat 函数才行。
使用 Python 导入 - 将多个 excel 文件导入数据框
【中文标题】使用 Python 导入 - 将多个 excel 文件导入数据框【英文标题】:Import using Python - multiple excel files into a dataframe 【发布时间】:2018-02-22 15:17:42 【问题描述】:我想遍历一个目录并找到特定的 xlsx 文件,然后将它们分别放入单独的 pandas 数据框中。这里的问题是我还希望这些 excel 文件中的所有工作表都在数据框中。
下面是我实现的代码示例,我只需要添加逻辑来选择所有工作表:
import pandas as pd
from glob import glob
path = 'path_to_file'
files = glob(path + '/*file*.xlsx')
get_df = lambda f: pd.read_excel(f)
dodf = f: get_df(f) for f in files
dodf[files[2]] --- dictionary of dataframes
【问题讨论】:
我已经创建了一个字典来访问每个数据帧。所以当前的方法应该没问题,即在字典中。 【参考方案1】:如 Pandas 中的 this answer 所述,您仍然可以访问 ExcelFile
类,该类会加载文件并创建对象。
此对象有一个.sheet_names
属性,它为您提供当前文件中工作表名称的列表。
xl = pd.ExcelFile('foo.xls')
xl.sheet_names # list of all sheet names
要实际处理特定工作表的导入,请在导入的 Excel 文件的对象上使用.parse(sheet_name)
:
xl.parse(sheet_name) # read a specific sheet to DataFrame
对于您的代码,类似于:
get_df = lambda f: pd.ExcelFile(f)
dodf = f: get_df(f) for f in files
...为您提供dodf
ExcelFile
对象的字典。
filename = 'yourfilehere.xlsx'
a_valid_sheet = dodf[filename].sheet_names[0] # First sheet
df = dodf[filename].parse(sheet_name)
【讨论】:
我不想手动输入文件名。有没有办法从我创建的字典 dodf 中获取它?我对 Python 完全陌生,所以我不知道它是如何工作的。 是的——但您需要将pd.read_excel(f)
更改为pd.ExcelFile(f)
。完成后,每个对象都将具有 .sheet_names
属性,该属性是该文件中的工作表列表。
是的,我已经这样做了。但是,我必须单独将每个工作表解析到数据框中,对吗?
@ManasJani 没错。但是您可以遍历 sheet_names
的列表来执行此操作,例如for sheet in your_xls_obj.sheetnames: df = your_xls_obj.parse(sheet)
以上是关于matlab 连续导入多个excel文件并分别保存变量的主要内容,如果未能解决你的问题,请参考以下文章
如何将EXCEL里的大量数据导入并转化成MATLAB中的矩阵
将多个 csv 文件中的数据导入一个 Excel 工作表并计算平均值
MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?