How to import a 50mb csv file?
2 次查看(过去 30 天)
显示 更早的评论
I have a csv file of size 50mb. The data is numbers and strings. I tried to import it using the import button in matlab. Now the data is 100% parsed but nothing happens for an hour, I think it's still working. It took more than 6 hours to parse 100%. Is there a smarter and faster way to import the data and save it as a matrix?
0 个评论
回答(1 个)
Walter Roberson
2018-6-27
We recommend using readtable(). Especially if you have R2016b or later, in which case use detectImportOptions first to create an options structure to pass to readtable() .
2 个评论
Walter Roberson
2018-6-27
If you need to end up with a matrix, then table2cell() . You cannot use table2array() because you have mixed data types.
If you want to create arrays of the various parts that are alike, then
raw = table2cell(YourTable);
mask = cellfun(@isnumeric, raw(1,:));
num = cell2mat( raw(:,mask) );
mask = cellfun(@ischar, raw(1,:));
txt = raw(:,mask);
Here I make the assumption that all entries in a column are the same data type. This will not necessarily be true if you used readtable() with empty cells or text-based indicators of missing data such as "NA" that do not happen to match "nan" or "NaN" -- though if you used detectImportOptions then it should notice those by itself, and you can also use the TreatAsEmpty option to readtable.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!