从数据存储开始
什么是数据存储?
数据存储是读取单个文件或文件或数据集合的对象。数据存储作为具有相同结构和格式的数据的存储库。例如,数据存储中的每个文件必须包含以相同顺序出现的相同类型(例如数字或文本)的数据,并且用相同的分隔符分隔。
数据存储在以下情况下是有用的:
集合中的每个文件可能都太大,无法装入内存。数据存储允许您从每个文件中读取和分析适合内存的较小部分的数据。
集合中的文件具有任意名称。数据存储充当一个或多个文件夹中的文件存储库。这些文件不需要有顺序的名称。
可以根据数据或应用程序的类型创建数据存储。不同类型的数据存储包含与它们所支持的数据类型相关的属性。金宝app例如,参见下表的MATLAB列表®数据存储。有关数据存储的完整列表,请参见“文件格式”或“应用程序”选择“数据存储”.
文件或数据类型 | 数据存储类型 |
---|---|
包含面向列数据的文本文件,包括CSV文件。 | TabularTextDatastore |
映像文件,包括支持的格式金宝appimread 比如JPEG和PNG。 |
ImageDatastore |
支持Excel的电子表格文件金宝app®格式,例如.xlsx . |
SpreadsheetDatastore |
的输入或输出的键值对数据mapreduce . |
KeyValueDatastore |
包含面向列数据的Parquet文件。 | ParquetDatastore |
自定义文件格式。需要一个提供的函数来读取数据。 | FileDatastore |
用于检查点的数据存储高 数组。 |
TallDatastore |
创建并从数据存储中读取数据
使用tabularTextDatastore
函数从示例文件创建数据存储airlinesmall.csv
,其中包含个别航空公司航班的出发和抵达信息。结果是TabularTextDatastore
对象。
ds = tabularTextDatastore(“airlinesmall.csv”)
文件:{'…\matlab\toolbox\matlab\demos\ airlinsmall .csv'}文件夹:{'…\matlab\toolbox\matlab\demos'} FileEncoding: 'UTF-8' AlternateFileSystemRoots: {} PreserveVariableNames: false ReadVariableNames: true VariableNames:{'年','月','日of月'…DatetimeLocale: en_US文本格式属性:NumHeaderLines: 0 Delimiter: ',' RowDelimiter: '\r\n' TreatAsMissing: " MissingValue: NaN高级文本格式属性:TextscanFormats: {'%f', '%f', '%f'…TextType: 'char' ExponentCharacters: 'eEdD' CommentStyle: "空格:' \b\t' MultipleDelimitersAsOne: false控制由preview、read、readall返回的表的属性:SelectedVariableNames: {'Year', 'Month', 'DayofMonth'…和26}SelectedFormats: {% f ', ' % f ', ' % f '……ReadSize: 20000行OutputType: 'table' RowTimes: [] Write-specific Properties: SupportedOutputFor金宝appmats: ["txt" "csv" "xlsx" "xls" "parq" "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入门和用于内存不足数据的高数组.
另请参阅
tabularTextDatastore
|imageDatastore
|spreadsheetDatastore
|KeyValueDatastore
|fileDatastore
|高
|mapreduce