2016-06-10 3 views
3

.txt 파일에서 많은 양의 데이터를 읽고 플로팅하는 일반적인 프로그램을 작성하고 있습니다. 각 파일의 열 수는 다릅니다. 각 파일에는 관심이없는 8 개의 열이 있으므로 해당 열의 수를 계산할 수 있습니다. 어떻게 데이터를 읽고 각 관련 칼럼의 데이터를 별도의 변수로 정렬 할 수 있습니까?데이터 열을 변수에 할당하는 방법

내가 본
datafile = 'plotspecies.txt' 
with open(datafile) as file: 
    reader = csv.reader(file, delimiter=' ', skipinitialspace=True) 
    first_row = next(reader) 
    num_cols = len(first_row) 
    rows = csv.reader(file, delimiter = ' ', quotechar = '"') 
    data = [data for data in rows] 

num_species = num_cols - 8 

사람들이 팬더는 이런 종류의 물건에 대한 좋은 말,하지만 난 그것을 가져올 수없는 것 :

이것은 내가 지금까지있는 것입니다. 나는 그것없이 해결책을 선호 할 것이다.

+0

정확히 무엇을 원하니? –

+0

각 열의 데이터로 각 종을 단일 변수로 사용할 수 있습니다. – evtoh

+0

한 행에 대한 예제를 제공 할 수 있습니까? 또는 파일에 대한 자세한 내용을 알려주십시오. 그것 없이는 대답하기가 매우 어렵습니다. –

답변

7

실제로 팬더가 여기에 적합한 솔루션입니다. 문제는 견고한 구조를 확신 할 수없는 부분을 강력하게 처리하기 위해주의해야 할 많은 엣지 경우이며 csv 모듈을 구두 뿔 모양으로 만들려고 시도하면 두통이 생길 수 있습니다 (그래도 할 수는 있지만)

이유는 pandas을 가져올 수없는 이유는 기본적으로 python이 제공되지 않기 때문입니다. 언어를 선택할 때 고려해야 할 가장 중요한 사항 중 하나는 액세스 권한을 부여하는 패키지의 생태계입니다. 파이썬은 존경심에서 최고 중 하나이기 때문에, 표준 파이썬의 일부가 아닌 모든 것을 무시하기 위해서는 언어의 가장 중요한 부분을 무시해야합니다.

Windows 환경을 사용하는 경우 conda을 설정해야합니다. 이렇게하면 약간의 오버 헤드로 파이썬 사용자가 사용할 수있는 많은 패키지를 완벽하게 탐색 할 수 있습니다. 여기에는 실제로이 문제를 처리하는 올바른 방법 인 pandas이 포함됩니다. http://conda.pydata.org/docs/install/quick.html

당신이 가지고있는 일단 pandas이이만큼 쉬운 설치 :와

import pandas 
test = pandas.read_csv(<your_file>) 
your_Variable = test[<column_header>] 

쉬운 설치 CONDA에 대한 추가 정보를 원하시면이 링크를 참조하십시오.

당신이 정말로, 정말로 당신은 다음 무엇을 같은이 할 수있는 핵심 파이썬에없는 물건을 사용하지 않으려면,하지만 당신은 실제 솔루션에 대한 충분한 정보 제공되지 않은 :

def col_var(input_file, delimiter): 
    # get each line into a variable 
    rows = open(input_file).read().splitlines() 

    # split each row into entries 
    split_rows = [row.split(delimiter) for row in rows] 

    # Re-orient your list 
    columns = zip(*split_rows) 

이의 적어도 직관적 조각, 그래서 여기 마지막 줄입니다 작동 방법을 보여주는 작은 예제 :

>>> test = [[1,2], [3,4]] 
>>> zip(*test) 
[(1, 3), (2, 4)] 
+0

저는 OS X를 사용하고 있습니다. 아나콘다를 설치했는데 팬더를 얻을 수 없습니다. 나는 뭔가 잘못하고있는 것 같아. – evtoh

+0

OS X을 사용하고 있다면 'conda'를 신경 쓰지 않아도됩니다. 그냥'pip'를 사용하십시오. 나는 삐삐가 '콘도'보다 훨씬 쉽고 번거롭지 않다고 느낍니다. https : //pip.pypa.io/en/stable/installing/ –

+0

pip를 사용하면 권한이 없다는 오류가 반환됩니다. – evtoh

1

글쎄, 당신은 CSV 모듈은 구분 기호의 일종이 내가 제공 사용할 수 있습니다 열을 설정하는 행 appart.

import csv 

file_to_read_from = 'myFile.txt' 

#initializing as many lists as the columns you want (not all) 
col1, col2, col3 = [], [], [] 
with open(file_to_read_from, 'r') as file_in: 
    reader = csv.reader(file_in, delimiter=';') #might as well be ',', '\t' etc 
    for row in reader: 
     col1.append(row[0]) # assuming col 1 in the file is one of the 3 you want 
     col2.append(row[3]) # assuming col 4 in the file is one of the 3 you want 
     col3.append(row[5]) # assuming col 6 in the file is one of the 3 you want 
관련 문제