2016-06-17 12 views
1

로드 변동을 시각적으로 분석하려고합니다. CSV 파일에서 데이터를 읽었으며 인덱스를 날짜/시간 형식으로 변환했습니다. 데이터는 주중 (현재 현재 07 : 00-18 : 00으로 선택됨) 관심 시간과 함께 1 년 동안 5 분당입니다.시간이 겹치는 팬더 플롯 시계열

선택한 시간 (pandas timeseries between_datetime function?)을 사용하여 timeseries 데이터를 순차적으로 플로팅 할 수 있습니다. 이는 해결하려고 한 질문 중 하나입니다.

내가 지금하고 싶은 일 : 고정 된 (주간) x 축을 사용하여 주간 데이터를 플롯하여 일일 데이터가 07:00 - 18:00 사이에 실행되도록 표시합니다. 일년 (또는 달)의 각 요일은 그래프에서 별도의 줄이어야합니다. 연속 시계열 플롯에 대한 내 코드의

예 :

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib 

Y13 = pd.read_csv(path + "Y13.csv") 
Y13.index = pd.to_datetime(Y13.Datetime) 
Y14 = pd.read_csv(path + "Y14.csv") 
Y14.index = pd.to_datetime(Y14.Datetime) 

fig, axes = plt.subplots(nrows=2, ncols=1, sharex=True) 
Y13.LOAD.between_time('07:00','18:00').plot(ax=axes[0]) 
Y14.LOAD.between_time('07:00','18:00').plot(ax=axes[0]) 

Y13.LOAD.between_time('07:00','18:00').diff().plot(ax=axes[1]) 
Y14.LOAD.between_time('07:00','18:00').diff().plot(ax=axes[1]) 

내가 루프를 사용하여이 음모 수 있지만,보다 효율적인/파이썬/팬더 방법이 좋을 것 같아요.

음모를 꾸미는 데 시간이 오래 걸리는 것처럼 데이터를 잘못 사용했거나 다른 큰 차이가 있습니까?

감사

답변

2

pandas.plot 당신이 필요 수 있습니다 인수 subplots 있습니다. 희망이 도움이됩니다.

Pandas Visualization - Subplots

In[1]: import pandas as pd 

In[2]: import numpy as np 

In[3]: datapoints = 365 * 24 * 12 

In[4]: data = pd.DataFrame({"Data": np.random.randn(datapoints)}, index=pd.date_range(start="2015-01-01", freq="5min", periods=datapoints)) 

In[5]: data = data.between_time("07:00", "18:00") 

In[6]: data["Date"] = data.index.date 

In[7]: data["Time"] = data.index.time 

In[8]: data[:4] 
Out[8]: 
         Data  Date  Time 
2015-01-01 07:00:00 0.890659 2015-01-01 07:00:00 
2015-01-01 07:05:00 -0.643869 2015-01-01 07:05:00 
2015-01-01 07:10:00 0.267501 2015-01-01 07:10:00 
2015-01-01 07:15:00 0.627690 2015-01-01 07:15:00 

In[9]: data = data.pivot(index="Time", columns="Date", values="Data") 

In[10]: data.iloc[:, 0:4].plot(subplots=True) 
Out[10]: 
array([<matplotlib.axes._subplots.AxesSubplot object at 0x1213316d0>, 
     <matplotlib.axes._subplots.AxesSubplot object at 0x1214b3e90>, 
     <matplotlib.axes._subplots.AxesSubplot object at 0x120fa7350>, 
     <matplotlib.axes._subplots.AxesSubplot object at 0x11eb6bf10>], dtype=object) 

Chart