主要内容

开始使用数据存储

什么是数据存储?

数据存储是一个对象用于读取一个文件或一组文件或数据。数据存储作为存储库相同的结构和格式的数据。例如,数据存储中的每个文件必须包含相同类型的数据(如数字或文本)出现在相同的顺序,和同样的分隔符分开。

一个数据存储时是有用的:

  • 集合中的每个文件可能太大,适合在内存中。数据存储可以从每个文件读取和分析数据在较小的部分装入内存。

  • 文件集合的任意名称。一个数据存储作为库文件在一个或多个文件夹。不需要有顺序的名称的文件。

您可以创建一个数据存储基于类型的数据或应用程序。不同类型的数据存储包含属性相关的数据类型,他们的支持。金宝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 \ matlab工具箱\ \ demo \ airlinesmall。csv”}文件夹:{”……matlab \ matlab工具箱\ \ demo \”} FileEncoding:“utf - 8”AlternateFileSystemRoots: {} PreserveVariableNames:假ReadVariableNames:真VariableNames:{“年”、“月”、“DayofMonth”……和26}DatetimeLocale: en_US文本格式属性:NumHeaderLines: 0分隔符:”、“RowDelimiter: \ r \ n TreatAsMissing:”MissingValue:南高级文本格式属性:TextscanFormats: {% f ', ' % f ', ' % f '……和26}TextType:“字符”ExponentCharacters: eEdD CommentStyle:”空白:“\ b \ t”MultipleDelimitersAsOne:假控制表的属性返回的预览,阅读,readall: SelectedVariableNames:{“年”、“月”、“DayofMonth”……和26}SelectedFormats: {% f ', ' % f ', ' % f '……和26}ReadSize: 20000行OutputType:“表”RowTimes:[]编写特殊属性:SupportedOutputFormats:[“三种”“csv”“xlsx”“xl金宝apps”“铺”“parq”] DefaultOutputFormat:“三”

在创建数据存储之后,您可以预览数据而无需全部加载到内存中。您可以指定感兴趣的变量(列)SelectedVariableNames财产预览或只读这些变量。

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

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

ds。TreatAsMissing =“NA”;

如果所有的数据存储中的数据装入内存变量的兴趣,你可以阅读它使用readall函数。

T = readall (ds);

否则,读取数据在较小的子集,装入内存,使用函数。默认情况下,函数读取从TabularTextDatastore20000行。但是,你可以改变这个值通过指定一个新值ReadSize财产。

ds。ReadSize = 15000;

重置初始状态的数据存储在重读之前,使用重置函数。通过调用函数在一个循环,您可以在每个子集执行中间计算的数据,然后最后总中间结果。这段代码计算的最大价值DepDelay变量。

重置(ds) X = [];hasdata (ds) T =阅读(ds);X(结束+ 1)= max (T.DepDelay);结束maxDelay = max (X)
maxDelay = 1438

如果数据在每个文件会在内存中,您可以指定每个调用应该读一个完整的文件,而不是一个特定的行数。

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

除了阅读数据存储中的数据的子集,您可以应用数据存储使用map和reduce函数mapreduce或者创建一个高阵列使用。有关更多信息,请参见开始使用MapReduce高内存不足数据数组

另请参阅

||||||

相关的话题