数据存储是用于读取单个文件或文件或数据集合的对象。数据存储器充当具有相同结构和格式化的数据的存储库。例如,数据存储区中的每个文件必须包含与同一顺序出现的相同类型(例如数字或文本)的数据,并由相同的分隔符分隔。
数据存储在以下情况下是有用的:
集合中的每个文件可能太大而无法适合内存。数据存储允许您从确实在内存中拟合的较小部分中从每个文件读取和分析数据。
集合中的文件具有任意名称。数据存储在一个或多个文件夹中的文件中作为存储库。文件不需要具有顺序名称。
您可以根据数据或应用程序的类型创建数据存储。不同类型的数据存储包含与支持的数据类型相关的属性。金宝app例如,有关MATLAB列表,请参阅下表®数据存储。有关数据存储的完整列表,请参见选择文件格式或应用程序的数据存储。
文件类型或数据类型 | 数据存储类型 |
---|---|
包含面向列数据的文本文件,包括CSV文件。 | TabularTextDatastore |
图像文件,包括支持的格式金宝appimread 例如JPEG和PNG。 |
ImageageAtastore. |
带支持的Excel的电子表格文件金宝app®格式如.xlsx. 。 |
SpreadsheetDatastore. |
键值对数据输入或输出mapreduce 。 |
KeyValueDatastore |
包含面向列数据的镶嵌类文件。 | 帕奎特adaTastore. |
自定义文件格式。需要提供提供的函数来读取数据。 | filedatastore. |
数据存储的检查点高 阵列。 |
塔塔塔雷斯 |
使用tabularTextDatastore
从示例文件创建数据存储的函数airlinesmall.csv
,其中包含有关个别航空公司航班的出发和到达信息。结果是一个TabularTextDatastore
对象。
ds = tabulartextdataStore('airlinesmall.csv'的)
ds = TabularTextDatastore with properties: Files:{'…\matlab\工具箱\matlab\demo \ airlinessmall .csv'} folder:{'…\matlab\工具箱\matlab\demos'} FileEncoding: 'UTF-8' AlternateFileSystemRoots: {} PreserveVariableNames: false ReadVariableNames: true VariableNames:{'年','月','DayofMonth'…DatetimeLocale: en_US Text Format Properties: NumHeaderLines: 0 Delimiter: ',' RowDelimiter: '\r\n' TreatAsMissing: " MissingValue: NaN Advanced Text Format Properties: TextscanFormats: {'%f', '%f', '%f'…和26 more} TextType: 'char' ExponentCharacters: 'eEdD' CommentStyle: " Whitespace: ' \b\t' MultipleDelimitersAsOne: false属性,控制由preview, read, readall返回的表:{'Year', 'Month', 'DayofMonth'…和26}SelectedFormats: {% f ', ' % f ', ' % f '……and 26 more} ReadSize: 20000 rows OutputType: 'table' RowTimes: [] Write-specific Properties: 金宝appSupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq"] DefaultOutputFormat: "txt"
创建数据存储后,您可以在不必将其加载到内存中的情况下预览数据。您可以使用使用的兴趣的变量(列)sedicentvariablenames.
属性要预览或只读这些变量。
ds.selectedvariablenames = {'deptime'那'depdelay'};预览(DS)
ans = 8×2表Deptime depdelay _______ ________ 642 12 1021 11 2055 20 1332 12 629 -1 1446 63 928 -2 859 -1
您可以在数据中指定表示缺失值的数据中的值。在airlinesmall.csv
,缺少值由NA
。
ds.treatasmissing ='na';
如果数据存储区中的所有数据都适用于内存中的变量,您可以使用它使用的读物
函数。
t = readall(DS);
否则,使用读
函数。默认情况下,读
功能从a中读取TabularTextDatastore
一次20,000行。但是,您可以通过为该值分配给的新值来更改此值阅读
财产。
ds.readsize = 15000;
属性将数据存储重置为初始状态,然后重新读取重启
函数。通过调用读
函数在一个而
循环时,可以对每个数据子集执行中间计算,然后在最后聚合中间结果。的最大值DEPDELAY
多变的。
重置(DS)x = [];而Hasdata(DS)T =读取(DS);x(end + 1)= max(t.depdelay);结尾maxdelay = max(x)
maxDelay = 1438
如果每个单独文件中的数据适合内存,则可以指定每个调用读
应该读取一个完整的文件而不是特定的行数。
重置(DS)DS.ReadSize ='文件';x = [];而Hasdata(DS)T =读取(DS);x(end + 1)= max(t.depdelay);结尾maxDelay = max (X);
除了读取数据存储中的数据子集外,还可以使用以下方法对数据存储应用map和reduce函数mapreduce
或使用高大的数组使用高
。有关更多信息,请参阅MapReduce入门和高阵列用于存储空带数据。
tabularTextDatastore
|imageDatastore
|SpreadsheetDatastore.
|KeyValueDatastore
|filedatastore.
|高
|mapreduce