2012-05-10 142 views
1

我想從損壞的CSV文件導入數據。它包含科學數字,它是一個包含約30萬行和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]]會得到你的第一列。