2017-04-12 4 views
0

난 다음 데이터 집합을 가지고 :팬더에서 두 개의 timedelta 변수 사이에 그래프를 그리는 방법은 무엇입니까?

Duration1       Duration2 
05:13:45        01:09:58 
18:53:38        01:53:18 
NaT         01:03:38 
07:19:38        01:23:26 

나는 작업 시간과 duration2 사이의 그래프를 그릴 싶어?

df['duration1'] =[" 05:13:45 "," 18:53:38 "," NaT ","07:19:38"] 
df['duration2'] = [" 01:09:58","01:53:18","01:03:38","01:23:26"] 

기간 1, 기간 2는 timedelta64 [NS] 데이터 유형

보너스 : 그래프의 경향에 기초하여 함수로 플롯 얻을 수 있습니까?

+0

당신은 대답이 질문에 충분한 정보를 제공하지 않고, 충분한 정보를 제공하지 않는 것을 불평 할 수 없다! – ImportanceOfBeingErnest

+0

동의합니다. 옵션을 잘못 선택했습니다. 그리고 나중에 편집 할 수 없습니다. –

+0

하지만 질문을 편집하고 답을 원할만한 정보를 정확히 묻는 경우가 있습니다. (나에게 대답은 꽤 완전하고 철저하게 보입니다.) – ImportanceOfBeingErnest

답변

2

사용 dt.total_seconds

df.stack().dt.total_seconds().unstack().plot.scatter(
    'Duration1', 'Duration2') 

enter image description here

추세선을 얻을

가장 쉬운 방법을 사용하는 것입니다 seaborn.regplot

import seaborn as sns 

d = df.stack().dt.total_seconds().unstack() 
sns.regplot(d.Duration1, d.Duration2, ci=None) 

enter image description here


처음부터

코드는
복사 할 수 있어야는/붙여 넣기칩니다이

from io import StringIO 
import pandas as pd 
import seaborn as sns 


txt = """Duration1       Duration2 
-1 days +05:13:45     0 days 01:09:58 
-6 days +18:53:38     0 days 01:53:18 
NaT        0 days 01:03:38 
10 days +07:19:38     0 days 01:23:26 
""" 

df = pd.read_csv(StringIO(txt), sep='\s{2,}', engine='python').apply(pd.to_timedelta) 

d = df.stack().dt.total_seconds().unstack() 

sns.regplot(d.Duration1, d.Duration2, ci=None) 
+0

하지만 ValueError 오류가 발생합니다 : 일이 월간 범위를 벗어났습니다 –

+0

@Irus 그 이상의 정보가 필요합니다. 나는 그 오류를 얻지 못한다. 그래서 나는 어떤 선이 그것을 생산하는지 모른다. – piRSquared

관련 문제