首页 文章

MATLAB - 读取缺少数据的CSV的最佳方法

提问于
浏览
1

我有一个可能缺少数据的CSV文件,数据是字符和数字 . 处理这个问题的最佳方法是什么?

2 回答

  • 1

    这是一个例子:

    file.csv

    name,age,gender
    aaa,20,m
    bbb,25,
    ccc,,m
    ddd,40,f
    

    readMyCSV.m

    fid = fopen('file.csv','rt');
    C = textscan(fid, '%s%f%s', 'Delimiter',',', 'HeaderLines',1, 'EmptyValue',NaN);
    fclose(fid);
    [name,age,gender] = deal(C{:});
    

    数据如下:

    >> [name num2cell(age) gender]
    ans = 
        'aaa'    [ 20]    'm'
        'bbb'    [ 25]    '' 
        'ccc'    [NaN]    'm'
        'ddd'    [ 40]    'f'
    
  • 5

    @Amro建议的是读取缺少值的csv文件的最常用方法 . 在您的情况下,因为您的数据类型都是字符和数字,您应该提供每列的正确格式 . 所以你的函数应该是这样的:

    C = textscan(fid, '%d32 %c %d8 %d8 %d32 %f32 %f %s ','HeaderLines', 1, 'Delimiter', ',');

    有关更多数据格式,请查看此处:http://www.mathworks.com/help/techdoc/ref/textscan.html

相关问题