programing tip

같은 그림에 다른 데이터 프레임을 플로팅합니다.

itbloger 2020. 10. 13. 07:31
반응형

같은 그림에 다른 데이터 프레임을 플로팅합니다.


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

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 축은 온도입니다. 이 작업을 어떻게해야합니까?


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()

시험:

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

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

ax = df1.plot()

df2.plot(ax=ax)

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


여러 데이터 프레임에 대해이를 수행하려면 해당 프레임에 대해 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)

참고 URL : https://stackoverflow.com/questions/13872533/plot-different-dataframes-in-the-same-figure

반응형