在Mathematica中拟合CSV数据

时间:2012-08-04 12:09:07

标签: csv import wolfram-mathematica

我有一个CSV file,请注意您应该复制并粘贴它并将文件名重命名为GPA.csv,我想将其导入Mathematica并使用电源功能进行安装。

注意:我知道将它与幂函数完美匹配是非常不可取的,因为它会给出错误的预测。

所以我开始做以下事情:

data = Import["C:\\GPA.csv", "Table"]
linfit = Fit[data, {1,x}, x]

现在奇怪的是它给我一个错误说明:

  

Fit :: fitc:坐标数(0)不等于变量数(1)。 >>

但我相信我已输入超过350个坐标。我做错了什么?

PS:我也尝试做test = Transpose [data],但后来得到大约350个坐标,它仍然不等于变量数。

1 个答案:

答案 0 :(得分:1)

回答你的两个问题:

  1. Import["C:\\GPA.CSV", "Data"]会让一切正常 - 就像Import["C:\\GPA.CSV"]一样。

  2. 这些事情不同的原因是因为Mathematica有一个不直观的(IMO)令人困惑的文件导入方式。 "Table"无效的具体原因是,这被解释为“文件格式”,默认情况下,请参阅the format documentation - Import假设在这种情况下:

    "FieldSeparators" = {" ","\t"}
    

    这样您的逗号实际上被假定为每行上的字符串的一部分,而不是分隔符 - 只允许使用空格和制表符。 (如果您的文件包含1, 2,则会更加混乱,在这种情况下,您会得到一个字符串"1,"和一个数字2。)因此,您还可以使用

    Import["C:\\GPA.CSV", "Table", "FieldSeparators" -> ","]
    

    当然,CSV文件格式会将逗号视为您想要的分隔符。令人困惑的是,"Data"在这种情况下,不是'文件格式',而是'元素'。这意味着.csv文件扩展名允许将文件导入为CSV文件,然后您请求...等待它...导入文件中的'data'元素。哪个是数据。

  3. 您可以尝试阅读the Import documentationlisting of formats,但我想您已经尝试过了。