数値とテキストの混在したcsvファイルの扱い
이전 댓글 표시
数値データ(各種データ)とテキストデータ(銘柄名)の混在したquerydata.csvファイルがあります。
実際のデータは、行数、列数も大きい(60万行*250列程度)ので、readcellでは読込時間がかかり、readmatrixではテキストデータが読みこめません。
なるべく速い読み込みで、データを落とさずに同じ形の配列(queryall)を作成するにはどうすればよいのでしょうか。
ご教示いただけますよう、よろしくお願いいたします。
なお、銘柄名にはテキストとして認識されるアルファベットと数字からなるものと、数字だけのものが混在しています。
例) querydata.csv 1-3列目:各種データ、4列目:銘柄名
댓글 수: 4
源樹 上林
2020년 12월 12일
readcell 、 readmatrix なるほど。今はこんな便利な命令あるんですか。でも2015では動かないのか残念。csv ならあとは、 textread …じゃなくて textscan もありますね。ボトルネックはテキストファイルへのアクセスだと思います。
fscanf や fgetl と split など、低水準の命令の方が早い可能性があります。高水準な命令は便利な半面、今回のケースにとっては余計な処理も含まれているはずなので遅くなっているはずです。一般的には低水準に近いほうが無駄がなく早いはずです。(最近の流行ではそうはならないのですが、MATLABはどうなんだろう?)
低水準 I/O によるテキスト データ ファイルのインポート
https://jp.mathworks.com/help/matlab/import_export/import-text-data-files-with-low-level-io.html
さて結論ですが、すみません。やってみないとわかりません。やったことありません。低水準の命令のほうが早いと思うのですが、もしかすると高水準な方は、内部で高速処理ような最適化とかしてるかもしれませんし。ということなので、ベンチマークテストをやってみることをおすすめします。
readcell や textscan 、 fscanf で読み込むだけのスクリプトをそれぞれ書いて、同じデータを読み込む時間をテストしてください。時間計測は、 tic, toc で十分だと思います。それで一番早いやつで諦めるしかないのかな。
データを出力する側が mat 形式などの matlab で簡単に読めるバイナリ形式で出力してくれれば一番楽なんですけどね。出力元の方のマニュアルや最新情報を確認するのも良いかもしれません。(Database Toolbox ?)
HIronori Kamachi
2020년 12월 13일
Kenta
2020년 12월 14일
HIronori Kamachi
2020년 12월 14일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 データ型の変換에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!