같은 그림에 다른 DataFrame을 플로팅합니다.


93

다음과 같은 형식으로 수년간의 온도 기록이있는 온도 파일이 있습니다.

2012-04-12,16:13:09,20.6
2012-04-12,17:13:09,20.9
2012-04-12,18:13:09,20.6
2007-05-12,19:13:09,5.4
2007-05-12,20:13:09,20.6
2007-05-12,20:13:09,20.6
2005-08-11,11:13:09,20.6
2005-08-11,11:13:09,17.5
2005-08-13,07:13:09,20.6
2006-04-13,01:13:09,20.6

매년 기록의 숫자와 시간이 다르므로 pandas datetimeindices는 모두 다릅니다.

비교를 위해 동일한 그림에 다른 연도의 데이터를 플로팅하고 싶습니다. X 축은 1 월 ~ 12 월이고 Y 축은 온도입니다. 이 작업을 어떻게해야합니까?

답변:


30

Chang의 대답은 동일한 그림에 여러 번 플롯하는 방법을 설명하지만이 경우 a groupbyunstacking을 사용하는 것이 더 나을 수 있습니다 .

(데이터 프레임에 이미 날짜 시간 인덱스가 있다고 가정)

In [1]: df
Out[1]:
            value  
datetime                         
2010-01-01      1  
2010-02-01      1  
2009-01-01      1  

# create additional month and year columns for convenience
df['Month'] = map(lambda x: x.month, df.index)
df['Year'] = map(lambda x: x.year, df.index)    

In [5]: df.groupby(['Month','Year']).mean().unstack()
Out[5]:
       value      
Year    2009  2010
Month             
1          1     1
2        NaN     1

이제 쉽게 플로팅 할 수 있습니다 (매년 별도의 선으로).

df.groupby(['Month','Year']).mean().unstack().plot()

344

시험:

ax = df1.plot()
df2.plot(ax=ax)

1
ipython 노트북에 있다면 어떻게 얻을 수 있습니까? 모든 설정이 완료된 후에 만 ​​그래프를 인쇄하는 보류 또는 표시 기능이 있습니까?
Diansheng

1
%matplotlib inlineiPython 노트북 내부에 시각화가 표시되도록 가져 오기를 수행하는 위치를 설정 합니다.
Hassan Baig

1
이것이 어떻게 작동하는지 단서가 3 개 이상의 데이터 프레임이 있다는 것입니까?
RPT

이것은 놀랍다. 3 개 이상의 dfs로 수행하는 방법에 대한 답변을드립니다
adivis12 2017

3
이것은 모든 유형plot(), 즉 모든 유형의 사양이 plot함수에 인수로 전달 될 때마다 작동합니까?
생성

27

Jupyter / Ipython 노트북을 실행 중이고 사용하는 데 문제가있는 경우;

ax = df1.plot()

df2.plot(ax=ax)

같은 셀 내에서 명령을 실행하십시오 !! 어떤 이유로 연속 셀로 분리되면 작동하지 않습니다. 적어도 나를 위해.


6

여러 데이터 프레임에 대해이를 수행하려면 해당 프레임에 대해 for 루프를 수행 할 수 있습니다.

fig = plt.figure(num=None, figsize=(10, 8))
ax = dict_of_dfs['FOO'].column.plot()
for BAR in dict_of_dfs.keys():
    if BAR == 'FOO':
        pass
    else:
        dict_of_dfs[BAR].column.plot(ax=ax)

0

@ adivis12 답변을 향상시키기 위해 if진술 을 할 필요가 없습니다 . 다음과 같이 넣으십시오.

fig, ax = plt.subplots()
for BAR in dict_of_dfs.keys():
    dict_of_dfs[BAR].plot(ax=ax)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.