ファイルサイズが大き​いCSVファイルの読​み込みについて

ファイルサイズが、行2000000 列10のファイルを読み込みたいです。 データインポートでは時間がかかってしまいます。 また、datastoreだと行数が多きいためエラーになってしまいます。
このファイルを読み込む方法を教えてください。

 採用された回答

Kazuya
Kazuya 2018 年 10 月 19 日
編集済み: Kazuya 2018 年 10 月 19 日

1 投票

datastore が最適な気がしますが、どんな読み込みをされたときにどんなエラーがでましたか?
200万x10の行列だと、double 型で大体 150MBのサイズになりますが・・これをすべてメモリ上に読み込む必要がありますか?
tall 配列の機能を使うと、一度に全部読み込まずにいろいろ計算できるので、PCのメモリ容量に不安がある場合にお勧めです。その分計算時間は余計にかかるのは難点ですが。 参照: tall 配列

4 件のコメント

neshin
neshin 2018 年 10 月 19 日
200万x10の行列だと、double 型で大体 150MBのサイズになりますが・・これをすべてメモリ上に読み込む必要がありますか? >>できれば読み込みたいです。
データの形ですが、 time a b ・・・i j 1 1 2 9 10 2 11 12 19 20 : 2000000 100 200 800 900
コード
ds = datastore(filename);
ds.ReadSize = 2000000;
data = read(ds);
Reardを2000000にしていますが、 456132x10 table しか読み込めません。 また、 data1 = readall(ds); とすると、 エラーになります。
エラー: matlab.io.datastore.TabularTextDatastore/readAllData (line 44) ファイル 'D:\Program Files\MATLAB\100統合検討PG\test1.CSV' 内のデータは、各行と各列のフィールド数が揃った表形式ではありません。"テキスト形式のプロパティ" と "テキスト形 式の詳細プロパティ" を確認してください。
エラー: matlab.io.datastore.TabularDatastore/readall (line 134)
t = readAllData(ds);
読み込む方法を教えてください。
Kazuya
Kazuya 2018 年 10 月 19 日
エラーの内容ありがとうございます。エラーの原因はデータの大きさではないようですね。私も以前出くわしたことがありますが、
各行と各列のフィールド数が揃った表形式ではありません。
とあるように、456132行目かその次あたりでフォーマットが崩れている可能性がありそうでが、、いかがですか?例えば
ds = datastore(filename);
ds.ReadSize = 456132;
data = read(ds);
と読み込めるところまで読み取ったデータ(の最後付近の値)をもとに、csvファイル内で検索かけて怪しいところがないか確認してみてはいかがでしょう。
neshin
neshin 2018 年 10 月 20 日
返信ありがとうございます。 色々調べたのですが、ファーマットが壊れている箇所はありませんでした。 datastoreでは、読み込めるサイズが決まってるのでしょうか?
とりあえず、このコードで読み込めました。
data = readtable(filename, 'delimiter', ',');
data;
何度も、ありがとうございました。
Kazuya
Kazuya 2018 年 10 月 20 日
datastoreで読み込めるサイズが決まっているということはなさそうですが・・。もやもやしますね。。
私の場合は、数値であるべき列に途中で文字列が混ざっていたのが原因で途中で読み込みが止まっていた、、と記憶しています。その場合、readtable で読むと数値で読み込むはずの列が、セル配列になってたりするのでわかりやすいのですけども。

サインインしてコメントする。

その他の回答 (1 件)

neshin
neshin 2018 年 10 月 21 日

0 投票

解明方法を探して頂いてありがとうございました。 また、知恵をかしていただければと思います。

タグ

質問済み:

2018 年 10 月 19 日

回答済み:

2018 年 10 月 21 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!