2014-10-29 5 views
2

24 컬럼 x 514 로우의 데이터가있는 .csv 파일이 있습니다. 이 열은 각각 다른 매개 변수를 나타내며 여러 매개 변수 사이의 추세를 연구하고자합니다..csv 파일에서 데이터를 추출하고 플롯을 만드는 방법은 무엇입니까?

genfromtxt를 사용하여 numpy 배열로 데이터를 가져 와서 두 개의 특정 열 (예 : 열 9에 대한 열 9)의 값을 플로팅 할 수 있습니다.

impactparameter=data[:,11] 
IndexError: too many indices 

문제가 여기에서 무엇을 할 수 있습니다 : 라인 12에서 I 발생할이 코드 오류로

import matplotlib.pyplot as plt 
import numpy as np 


data = np.genfromtxt('output_burnin.csv', delimiter=',') 

impactparameter=data[:,11] 
planetradius=data[:,9] 

plt.plot(planetradius,impactparameter,'bo') 

plt.title('Impact Parameter vs. Planet Radius') 
plt.xlabel('R$_P$/R$_Jup$') 
plt.ylabel('b/R$_star$') 

plt.show() 

: 여기에 지금까지 가지고 무엇인가?

또한 각 열에 .csv 파일의 헤더를 지정하는 방법을 알아 내려고 노력했습니다. 따라서 열 번호를 계산하는 대신, 그 플로팅을 할 때 해당 열의 이름을 호출 할 수 있습니다. 이것을 할 수있는 방법이 있습니까?

저는 파이썬에서 완전한 초보자입니다. 어떤 도움을 주셔서 감사합니다. 고마워요!

+1

'csv' 모듈을보십시오. https://docs.python.org/2/library/csv.html'impactparameter'는 크기가 1 인 배열입니다. 따라서'[:, 11]'을 어떻게 다룰 지 모릅니다. 그래서 파일 읽기에 문제가 발생했습니다. 즉, 가정 한 것과 다른 데이터 세트를 얻었습니다. –

+0

'print data'는 아마도 당신의 질문에 답을 줄 것입니다. – JulienD

+0

'data'는 2 차원 배열이 아닙니다. 'data.shape'를 검사하여 그것이 실제로 어떤 모양인지 확인하십시오. CSV 파일의 형식에 따라'data.reshape'를 사용하여 원하는 모양으로 슬라이스 할 수 있습니다. – hunse

답변

0

또한 각 열에 .csv 파일의 헤더를 지정하는 방법을 알아 냈습니다. 따라서 열 번호를 계산하는 대신, 그 플로팅을 할 때 해당 열의 이름을 호출 할 수 있습니다. 이것을 할 수있는 방법이 있습니까?

배열 이름에 열을 지정하려면 structured array으로 설정해야합니다. 당신이 당신의 CSV 파일의 시작 부분에 열 이름을 가지고 있고, np.genfromtxtnames=True을 설정하면

a = np.zeros(5, dtype='f4, f4, f4') 
a.dtype.names = ('col1', 'col2', 'col3') 
print a[0] # prints [0, 0, 0], the first row (record) 
print a['col1'] # prints [0, 0, 0, 0, 0], the first column 

는 다음 NumPy와 자동으로 올바른 이름으로 당신을 위해 구조화 된 배열을 만들 것입니다 : 여기

은 간단한 예제 .

+0

감사! 이 작품! 데이터 유형을 정의하기 위해 키워드는'dtype = ('f4, f4, f4')'로 작성되어야합니다. – Kristine

+0

네 말이 맞아. 고쳤다. 감사! – hunse

관련 문제