2017-03-21 4 views
-2

다음 csv 테이블에 데이터가 있습니다. Python에서 플롯하는 것은 꽤 까다 롭습니다. 내가 몇 가지 헤더 라인을 수동으로 제거하고 시간 대 데이터를 플롯 할 수 있지만 시간은 문자열 형식이며 분과 시간으로 구분됩니다 ...다음 데이터를 플롯하는 방법 :

헤더를 제거한 후 데이터의 첫 번째 열을 선택하려고했습니다. 회선을 수신했지만 unhashable type: slice 오류 메시지가 수신되었습니다.

I는 시간 데이터가 석출 한 경우, I 코드의 조각이 종류를 사용할 수있다 : I 배열 (매트릭스)의 모든 데이터가 있으면 그 시점부터는

def get_sec(time_str): 
    h, m, s = time_str.split(':') 
    return int(h) * 3600 + int(m) * 60 + float(s) 

후, I가있다 다음을 사용하여 플롯을 작성하십시오.

plt.plot(data[:,0],data[:,1],'r',data[:,0],data[:,2],... 

헤더를 자동으로 처리하도록 할 수 있으면 좋지만 큰 문제는 아닙니다. 데이터를 가정

00:00:00.000 0.002 0.003 0.002 7.74 8.04 7.74 160.44 
00:00:00.008 0.001 0.003 0.003 7.74 8.34 8.04 160.245 
00:00:00.016 0.001 0.003 0.002 7.74 8.34 7.74 160.065 
00:00:00.024 0.002 0.003 0.002 7.74 8.04 7.74 160.245 
00:00:00.032 0.001 0.003 0.002 7.74 8.04 8.04 159.705 
00:00:00.040 0.002 0.003 0.002 7.44 8.04 8.04 160.245 
+1

당신의 인쇄의 creen은 빈 스크린 샷입니다. 그것을 보는 것이 도움이 될 것입니다. –

+0

괜찮 았습니다. 그래서 당신은 CSV에서 데이터를 가져 오기 위해 파이썬 CSV 모듈을 사용하는 방법을 봤어? CSV 리더 객체를 생성하고, 반복하고, 모든 데이터를 매트릭스 또는 사전에로드하려고합니다. –

답변

0

time colA colB colC colD valueA valueB valueC 
00:00:00.000 0.002 0.003 0.002 7.74 8.04 7.74 160.44 
00:00:01.008 0.001 0.003 0.003 7.74 8.34 8.04 160.245 
00:00:02.016 0.001 0.003 0.002 7.74 8.34 7.74 160.065 
00:00:03.024 0.002 0.003 0.002 7.74 8.04 7.74 160.245 
00:00:04.032 0.001 0.003 0.002 7.74 8.04 8.04 159.705 
00:00:05.040 0.002 0.003 0.002 7.44 8.04 8.04 160.245 

당신이 팬더를 사용하여 데이터를 읽고 다음과 같이하기 matplotlib 함께 플롯 할 수 있습니다처럼 보이는 파일에 저장됩니다 다음은 데이터의 일부입니다 :

import pandas as pd 
import matplotlib.pyplot as plt 

fn = "data/timetable.txt" 
df = pd.read_csv(fn,delim_whitespace=True, parse_dates=True) 
df["time"] = pd.to_datetime(df["time"], format="%H:%M:%S.%f") 

plt.plot(df["time"], df["valueA"]) 
plt.plot(df["time"], df["valueB"]) 

plt.show() 

enter image description here

관련 문제