2012-05-10 5 views
1

손상된 CSV 파일에서 데이터를 가져 오려고합니다. 그것은 과학적 수치를 포함하고 있으며 약 300,000 개의 행과 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]]는 당신에게 첫 번째 열을 얻을 것이다.