CSV (.csv)

背景

    • MIME 类型:text/comma-separated-valuestext/csv
    • CSV 表格数据格式.
    • 按行来存储数值和文本信息,使用逗号分隔字段.
    • 通常作为交换格式用于电子表格应用程序.
    • CSV 是 Comma-Separated Values(逗号分隔的值)的缩写.
    • 纯文本格式.
    • 与 TSV 类似.
    • 支持 RFC 4180.

Import 与 Export

  • Import["file.csv"] 返回包含字符串和数字的列表的列表,表示存储在文件中的行与列.
  • Import["file.csv",elem] 从一个 CSV 文件中导入指定的参数.
  • Import["file.csv",{elem,subelem1,}] 导入子参数 subelemi,对于导入部分数据非常有用.
  • 导入格式可以用 Import["file","CSV"]Import["file",{"CSV",elem,}] 指定.
  • Export["file.csv",expr] 从 expr 创建一个 CSV 文件.
  • 支持 expr 的表达式包括:
  • {v1,v2,}单列数据
    {{v11,v12,},{v21,v22,},}数据的列表行
    array例如 SparseArrayQuantityArray 等的数组
    tseries一个 TimeSeriesEventSeries 或一个 TemporalData 对象
    Dataset[]一个数据集
  • 请到以下参考页面了解完整的基本信息:
  • Import, Export从文件导入或导出到文件
    CloudImport, CloudExport从云对象导入或导出到云对象
    ImportString, ExportString从字符串导入或导出到字符串
    ImportByteArray, ExportByteArray从字节数组导入或导出到字节数组

Import 参数

  • Import 通用参数:
  • "Elements" 该文件可用的参数和选项列表
    "Summary"文件摘要
    "Rules"所有可用参数的规则列表
  • 表示数据的参数:
  • "Data"二维数组
    "Grid"将数据作为 Grid 对象表格
    "RawData"字符串的二维数组
    "Dataset"将数据作为 Dataset
  • 默认情况下,ImportExport 使用"Data"参数.
  • 导入部分数据的子参数,任何数据表示参数 elem 可以使用 {elem, rows, cols} 格式指定行列,其中 rowscols 可为以下任意:
  • nn 行或列
    -n从结尾计算
    n;;mnm
    n;;m;;snm,步长为 s
    {n1,n2,}指定行或列 ni
  • 元数据参数:
  • "Dimensions"行数列表和最大列数
    "MaxColumnCount"最大列数
    "RowCount"行数

选项

  • ImportExport 选项:
  • "EmptyField"""如何表示空白字段
    "TextDelimiters""\""用于分割非数值字段的字符
  • 包含逗号和分隔符的数据字段,通常用引号字符套嵌. 默认情况下,Export 将双引号字符作为分隔符. 用 "TextDelimiters" 指定不同字符.
  • 默认情况下,并不导入双引号字符分隔的文本字段.
  • Import 选项:
  • CharacterEncoding"UTF8ISOLatin1"文件中使用的原始字符编码
    "CurrencyTokens"{{"$", "£", "¥", "€"}, {"c", "¢", "p", "F"}}当导入数值值时会跳过货币单位
    "DateStringFormat"None日期格式,按 DateString 规范给出
    "FillRows"Automatic是否填满行最大化列长
    "HeaderLines"0在文件开头跳过的行数
    "IgnoreEmptyLines"False是否忽略空白行
    "NumberPoint""."小数点字符串
    "Numeric"Automatic如果可以,是否将数据字段导入为数字
    "SkipLines"0在文件开头跳过的行数
  • 默认情况下,Import 试图将数据解释为 "UTF8" 编码文本. 如果文件中任何储存序列不能用 "UTF8" 表示,Import 将使用 "ISOLatin1" 代替.
  • CharacterEncoding -> Automatic, Import 尝试推断文件中的字符编码.
  • "HeaderLines""SkipLines" 的可能设置为:
  • n跳过的 n 行或作为 Dataset 开头使用
    {rows,cols}跳过的行和列或作为开头使用
  • Import 将表格输入转换为由 "DateStringFormat" 指定格式的 DateObject.
  • Export 选项:
  • AlignmentNone数据与表格列的对齐方式
    CharacterEncoding"UTF8"文件中使用的原始字符编码
    "FillRows"False是否填满行最大化列长
    "TableHeadings"None表格列和行的标头
  • Alignment 可用设置为 NoneLeftCenterRight.
  • "TableHeadings" 可以设置为以下值:
  • None没有标签
    Automatic对列和行给出连续的整数标签
    {"col1","col2",}列标签列表
    {rhead,chead}指定行和列的单独标签
  • Export 使用运行 Wolfram 语言的计算机系统的常用规范编码行分隔字符.

范例

打开所有单元关闭所有单元

基本范例  (3)

导入 CSV 文件:

从文件读取并绘制所有数据:

将 CSV 文件导入为有开头的 Dataset

导出表达式中一个数组至 CSV:

范围  (4)

导出一个 Dataset:

Values 从数据集中去除开头:

使用 "HeaderLines" 选项导入列表开头:

导出一个 TimeSeries:

导出一个 EventSeries:

导出一个 QuantityArray:

导入参数  (17)

"Data"  (6)

导入一个 CSV 文件作为值的二维列表:

这也是默认参数:

从 CSV 文件导入单行:

从 CSV 文件导入部分指定行:

从 CSV 文件导入前 10 行:

从 CSV 文件中导入单行和列:

从 CSV 文件导入单行:

"Dataset"  (3)

将 CSV 文件作为 Dataset 导入:

"HeaderLines" 将首行作为列标题:

"SkipLines" 仅导入需要的数据:

"Dimensions"  (1)

从 CSV 文件导入维数:

若文件中的所有行不含有相同列数,将使用最大行数:

"Grid"  (1)

将 CSV 数据作为 Grid 导入:

"MaxColumnCount"  (1)

获取 CSV 文件中的获取最大列数:

"RawData"  (3)

将 CSV 数据作为字符串行导入:

对比 "Data"

默认使用 "RawData", "Numeric"->False

使用 "Numeric"->True:

默认使用 "RawData", "FillRows"->True

使用 "FillRows"->False

"RowCount"  (1)

从 CSV 文件获取列数:

"Summary"  (1)

CSV 文件摘要:

导入选项  (10)

CharacterEncoding  (1)

字符串编码可通过 $CharacterEncodings 设定为人任意值:

"CurrencyTokens"  (1)

自动跳过货币标志:

"CurrencyTokens"->None 包括所有货币符号:

"DateStringFormat"  (1)

使用指定数据格式将数据转换为 DateObject

默认情况下,没有进行任何转换:

"EmptyField"  (1)

对 CSV 数据中的空字段指定默认值:

"FillRows"  (1)

对于 "Data" 参数,行长度被自动保存:

填补行:

对于 "RawData" 参数,默认导入完整字段:

"HeaderLines"  (1)

默认情况下,无行或列假设为开头行:

指定列开头:

指定行开头:

指定行和列的开头:

"IgnoreEmptyLines"  (1)

"IgnoreEmptyLines" 从导入数据中除去无数据的行:

"Numeric"  (1)

"Numeric"->True 解释数字:

在默认情况下,所有都导入为字符串:

"SkipLines"  (1)

CSV 文件可能包含命令行:

跳过命令行:

跳过命令行,并用下一行作为 Dataset 开头:

"TextDelimiters"  (1)

默认文本分隔符为双引号:

不同的字符串可作为文本分隔符:

导出选项  (7)

排列  (1)

默认情况下,对于任何排列不添加任意附加字符串:

左对齐列的值:

中间对齐列的值:

CharacterEncoding  (1)

字符串编码可通过 $CharacterEncodings 设定为任意值:

"EmptyField"  (1)

在默认情况下,空参数导出为空字符串:

对空参数指定不同值:

"FillRows"  (1)

在默认情况下,导出一个完整数组:

使用 "FillRows"->False 来保持行的长度:

"TableHeadings"  (1)

用自定义列开头导出数据:

用自定义列和行开头导出数据:

用成功整合的列和行标签导出数据:

"TextDelimiters"  (2)

默认情况下,非数字参数的分隔符是双引号:

指定不同的分割符字符:

"TextDelimiters"->"" 禁止任何文字分隔符:

默认情况下,数字参数没有任何分隔符字符:

应用  (1)

将欧洲城市和其人口列表导出到 CSV 文件:

导回数据并转换为表达式:

可能存在的问题  (5)

从旧版本的 Wolfram 语言生成的某些 CSV 数据可能含有未被正确分隔的文本字段,在版本 11.2 中可能无法准确导入:

"TextDelimiters""" 将给出以前预期的结果:

在默认情况下,使用双引号 "TextDelimiters" 导出一个完整数组:

"TextDelimiters""""FillRows"False 可与 11.2 之前版本同样导出 CSV 数据:

"nnnDnnn""nnnEnnn" 格式输入被解释为科学计数法的数字:

"Numeric" 选项覆盖解释:

导入有行和列标题的 Dataset 时左上角数据丢失:

Dataset 根据数据维数可查看不同内容: