2012-06-22 5 views
-4

현재 파이썬으로 큰 csv 데이터 세트를 가져 오는 데 실패하고 있습니다. 기본적으로, 나는 주식 시세 (각 주식에 배당금을 포함하는 또 다른 칼럼과 함께 주식에 의해 하나의 주식)로 만든 큰 CSV 파일을 가지고있어. 저는 csv 모듈을 사용하고 있습니다. 사실 열이 주식 quotations입니다. 파이썬은 행에 의해 np.array를 만들고 열로 np.array를 원합니다. np.array를 얻을 수 없습니다. 어떻게해야합니까 ??Python : 큰 csv 파일 가져 오기

도움 주셔서 감사합니다.

+0

무엇이 문제입니까? –

+2

파이썬의'csv' 모듈은 생성자를 사용하여 데이터를 반복합니다. 엄청난 양의 데이터 세트를 수십 개의 배열에 저장하려고하는데 실패하면 RAM이 충분하지 않을 수 있습니다. –

+0

코드를 작성하십시오 –

답변

0

본인은 아주 쉽게 다음 번에 목록을 사용하면 루프를 DICT의 목록을 반환 csv 파일의 경로를 거치게 미상 기능의 작은 조각이 당신에게

도움이 될 것입니다
def read_csv_data(path): 
    """ 
     Reads CSV from given path and Return list of dict with Mapping 
    """ 
    data = csv.reader(open(path)) 
    # Read the column names from the first line of the file 
    fields = data.next() 
    data_lines = [] 
    for row in data: 
     items = dict(zip(fields, row)) 
     data_lines.append(items) 
    return data_lines 

이 될 수 있음을 만들었습니다

감사합니다.

+0

고맙습니다. 나는 내가 원하는 것을 얻을 수 없기 때문에 더 정확해질 것입니다. 다음은 내 데이터베이스의 모습입니다. – marino89

0

당신이 찾고있는 것은 ndarray.shapendarray.reshape입니다.

http://www.scipy.org/Tentative_NumPy_Tutorial

그렇지 않으면, 당신은 단지 그것을 당신이 방법을 읽을 수 있습니다 다음, x는 ndarray입니다

x = x.transpose() 

을 수행하여 전치을한다.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.transpose.html 

이러한 작은 것들은 일반적으로 문서에 있습니다. 먼저주의 깊게 읽는 것이 좋습니다.

2

Pandas 라이브러리를 사용하는 것이 좋습니다. 또한 작은 CSD 파일로 큰 CSV 파일을 읽을 수 있습니다. 여기에 문서에서 examle는 다음과 같습니다

데이터 : 청크 크기를 지정

year indiv zit xit 
0 1977 A 1.2 0.60 
1 1977 B 1.5 0.50 
2 1977 C 1.7 0.80 
3 1978 A 0.2 0.06 
4 1978 B 0.7 0.20 
5 1978 C 0.8 0.30 
6 1978 D 0.9 0.50 

가 (당신이 반복 가능한 수) :

reader = read_table(’tmp.sv’, sep=’|’, chunksize=4) 


for chunk in reader: 
.....: print chunk 

출력 :

year indiv zit xit 
0 1977 A 1.2 0.60 
1 1977 B 1.5 0.50 
2 1977 C 1.7 0.80 
3 1978 A 0.2 0.06 
year indiv zit xit 
0 1978 B 0.7 0.2 
1 1978 C 0.8 0.3 
2 1978 D 0.9 0.5 

NB! 어쨌든 주식 데이터를 추가로 조작해야 할 경우 팬더가 가장 좋은 방법입니다.