主要内容

从数据存储开始

什么是数据存储?

数据存储是用于读取单个文件或文件或数据集合的对象。数据存储作为具有相同结构和格式的数据的存储库。例如,数据存储中的每个文件必须包含以相同顺序出现的相同类型(例如数字或文本)的数据,并由相同的分隔符分隔。

数据存储在以下情况下是有用的:

  • 集合中的每个文件可能太大,无法装入内存。数据存储允许您以适合内存的较小部分读取和分析来自每个文件的数据。

  • 集合中的文件具有任意名称。数据存储充当一个或多个文件夹中文件的存储库。文件不需要有顺序名称。

您可以根据数据或应用程序的类型创建数据存储。不同类型的数据存储包含与其支持的数据类型相关的属性。金宝app例如,MATLAB的列表见下表®数据存储。有关数据存储的完整列表,请参见选择“文件格式”或“应用程序”的数据存储

文件或数据的类型 数据存储类型
包含面向列数据的文本文件,包括CSV文件。 TabularTextDatastore
图像文件,包括支持的格式金宝appimread比如JPEG和PNG。 ImageDatastore
支持Excel的电子表格文件金宝app®格式,例如.xlsx SpreadsheetDatastore
的输入或输出的键值对数据mapreduce KeyValueDatastore
包含面向列数据的拼花文件。 ParquetDatastore
自定义文件格式。需要提供的函数来读取数据。 FileDatastore
用于检查点的数据存储数组。 TallDatastore

创建并从数据存储中读取数据

使用tabularTextDatastore函数从示例文件创建一个数据存储airlinesmall.csv,该网页载有个别航空公司航班的出发及抵达资料。结果是TabularTextDatastore对象。

ds = tabularTextDatastore(“airlinesmall.csv”
ds = TabularTextDatastore属性:文件:{'…\matlab\toolbox\matlab\demos\ airlinsmall .csv'}文件夹:{'…\matlab\toolbox\matlab\demos'} FileEncoding: 'UTF-8' AlternateFileSystemRoots: {} preservvariablenames: false ReadVariableNames: true VariableNames: {'Year', 'Month', 'DayofMonth'…和26个更多}DatetimeLocale: en_US文本格式属性:NumHeaderLines: 0分隔符:',' RowDelimiter: '\r\n' TreatAsMissing: " MissingValue: NaN高级文本格式属性:TextscanFormats: {'%f', '%f', '%f'…TextType: 'char' ExponentCharacters: 'eEdD' CommentStyle: "空格:' \b\t' MultipleDelimitersAsOne: false属性,控制表返回预览,读取,readall: SelectedVariableNames:{'年','月','月日'…和26}SelectedFormats: {% f ', ' % f ', ' % f '……ReadSize: 20000行OutputType: 'table' RowTimes:[]写属性:supportedoutputformat: ["txt" "csv" "xlsx" 金宝app"xls" "parquet" "parq"] DefaultOutputFormat: "txt"

创建数据存储之后,您可以预览数据,而不必将所有数据加载到内存中。属性指定感兴趣的变量(列)SelectedVariableNames属性预览或仅读取这些变量。

ds。SelectedVariableNames = {“DepTime”“DepDelay”};预览(ds)
ans = 8×2 table DepTime DepDelay _______ ________ 642 12 1021 1 2055 20 1332 12 629 1 1446 63 928 2 859 1

您可以在数据中指定表示缺失值的值。在airlinesmall.csv,缺失值表示为NA

ds。TreatAsMissing =“NA”

如果感兴趣的变量的数据存储中的所有数据都适合内存,则可以使用readall函数。

T = readall(ds);

方法读取适合内存的更小子集中的数据函数。默认情况下,函数从TabularTextDatastore一次2万行。属性的新值可以更改此值ReadSize财产。

ds。ReadSize = 15000;

属性将数据存储重置为初始状态,然后再重新读取重置函数。通过调用函数在循环中,您可以对每个数据子集执行中间计算,然后在结束时聚合中间结果。的最大值DepDelay变量。

reset(ds) X = [];hasdata(ds) T = read(ds);X(end+1) = max(T.DepDelay);结束maxDelay = max(X)
maxDelay = 1438

如果每个单独文件中的数据适合内存,则可以指定每次调用的对象应该读取一个完整的文件,而不是特定的行数。

重置(ds) ds。ReadSize =“文件”;X = [];hasdata(ds) T = read(ds);X(end+1) = max(T.DepDelay);结束maxDelay = max(X);

除了读取数据存储中的数据子集外,还可以使用map和reduce函数对数据存储应用mapreduce或使用.有关更多信息,请参见MapReduce入门而且内存不足数据的高数组

另请参阅

||||||

相关的话题