2012-05-10 17 views
1

破損したCSVファイルからデータをインポートします。それは科学的な数字を含んでおり、それは約300000行27列の大きなデータセットです。科学的データ

Import["data.csv","HeaderLines"->1] 

を使用してインポートすると、データ形式は文字列になります。だから私はそれをデータテーブル形式に変更します。

StringSplit[ToString[data[[#]]], ";"] & /@ 
Range[Dimensions[ 
    Import["data.csv"]][[1]]] 

私はデータを分析するために最初の列を使う必要があります。しかし問題は、この行が文字列型の 科学的数字であることです!私は数字に変更したい。私はこのコマンドを使用しました:

ToExpression[Internal`StringToDouble[fdata[[All, 1]][[#]]]] & /@ 
    Range[291407]; 

しかし、それは何時間もかかります!私は時間を無駄にせずにこれをどうやってやれるのか考えていますか?

+1

StackExchangeネットワークへようこそ! Mathematica関連の今後の質問については、[Mathematica.SE](http://mathematica.stackexchange.com/)で質問することを検討することができます。 Mathematica関連の活動のほとんどはそこに移っています。 – Szabolcs

+1

CSVファイルのいくつかの行を投稿することができます。そのため、読み込みが遅い理由と、すべてが文字列として読み取られる理由を理解することができますか?これは起こらないはずです。 – Szabolcs

答えて

1

次の操作を試みることができる:

(* read the first 5 rows *) 
d = ReadList["data.csv", Table[Number, {27}], 5] 


(* read the rows 100 to 150 *) 
s = OpenRead["data.csv"]; 
Skip[s, Record, 99] 
d = ReadList[s, Table[Number, {27}], 51] 
Close[s] 

そしてd[[All,1]]はあなたの最初の列を取得します。

関連する問題