2014-10-16 2 views
0

연속 선이 표시되도록 NaN 데이터가 무시되는 선 그림을 어떻게 만들 수 있습니까? 예를 들어, 아래의 데이터를 사용하면 다른 모든 관측치가 연결됩니다.NaN 값을 사용하여 연속 선을 만드는 방법?

enter image description here

cpu = DataFrame.from_dict({'{host=ny-service05}': {Timestamp('2014-10-16 14:19:36'): nan, 
Timestamp('2014-10-16 14:19:41'): 19.199999999999999, 
Timestamp('2014-10-16 14:19:51'): nan, 
Timestamp('2014-10-16 14:19:56'): 17.333333333333332, 
Timestamp('2014-10-16 14:20:06'): nan}, 
'{host=ny-service04}': {Timestamp('2014-10-16 14:19:36'): 13.866666666666667, 
Timestamp('2014-10-16 14:19:41'): nan, 
Timestamp('2014-10-16 14:19:51'): 12.466666666666667, 
Timestamp('2014-10-16 14:19:56'): nan, 
Timestamp('2014-10-16 14:20:06'): 18.399999999999999}}) 
+0

이 두 기둥이 될 것하고'nan's가 인터리브? 이 경우'cpu.fillna (method = 'pad') [:: 2] .plot()'이면 충분합니다. –

+0

@CTZhu : 아니요, 데이터 프레임이 N 개의 열이고 일반적인 데이터를 찾는 일반적인 솔루션을 찾고 있습니다. –

+0

데이터를 어떻게 '정렬'하시겠습니까? '나노'가 고정 단계로 삽입되지 않는다면 말입니까? 데이터가 시계열로 표시되기 때문에 매분 (또는 다른 시간) 다운 샘플링 할 수 있습니까? 물론 정렬이 문제가되지 않는다면 @farenorth의 해결책이 효과적 일 것입니다. –

답변

1

다른 모든 데이터가 NaN 인 경우, 당신이 중 하나를 사용하여 슬라이스 수 :

plot(time[::2], dat[::2]) 
plot(time[1::2], dat[1::2]) 

또는 데이터가 너무 정기적으로하지 않은 경우, 당신은 논리적 인 배열을 만들 수

그 새 배열을 만들 때 사용합니다 :

logic_array = ~(np.isnan(dat)) 

plot(time[logic_array], dat[logic_array]) 

이 후자의 방법은 매우 효율적이지 않습니다. 배열 (check this out)보기보다는 복사본을 만듭니다.하지만 그게 작동하는 방법입니다.

+0

약간의 스푼 공급의 기회가 있을까? 내 데이터 프레임에 이것을 적용하는 방법을 모르겠다 ... –

+0

나에게 (또는 누구든지) 당신에게 'spoonfeed'를하기 위해 더 완전한 질문을 제공해야 할 것입니다. 즉, NaN 값을 가진 데이터 객체가있는 지점에 도달하기 위해 실행할 수있는 최소한의 예제 코드를 제공하십시오. – farenorth

+0

이게 니가 원하는거야 :'cpu [~ np.isnan (cpu [ '{host = ny-service04}']). plot (marker = '.')' – farenorth

1

어떻게 interpolate() 사용에 대한 :

cpu.interpolate().plot() 
관련 문제