Pandas 熊猫为重叠的小时绘制时间序列

Pandas 熊猫为重叠的小时绘制时间序列,pandas,matplotlib,Pandas,Matplotlib,我试图对负载变化进行可视化分析。我从CSV文件中读取了数据,将索引转换为datetime格式,效果非常好。全年数据为每5分钟一次,白天(当前选择为07:00-18:00)为感兴趣的小时数 我可以使用所选的时间()按顺序绘制timeseries数据,这是我试图解决的问题之一 我现在想做的是:用固定的(日间)x轴绘制日间数据,这样每天的数据显示在07:00到18:00之间运行。然后,一年(或一个月)的每一天都应该是图表上的一条单独的线 顺序timeseries绘图的代码示例: import pand

我试图对负载变化进行可视化分析。我从CSV文件中读取了数据,将索引转换为datetime格式,效果非常好。全年数据为每5分钟一次,白天(当前选择为07:00-18:00)为感兴趣的小时数

我可以使用所选的时间()按顺序绘制timeseries数据,这是我试图解决的问题之一

我现在想做的是:用固定的(日间)x轴绘制日间数据,这样每天的数据显示在07:00到18:00之间运行。然后,一年(或一个月)的每一天都应该是图表上的一条单独的线

顺序timeseries绘图的代码示例:

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])
我想我可以使用一个循环来绘制这个图,但是一个更有效的/pythonic/pandas方法会更好

我将数据作为时间序列进行绘制是错误的,还是有其他大的差距需要解决


谢谢你。plot有一个参数
子图
,这可能是你需要的。希望这有帮助

[1]中的
:将熊猫作为pd导入
在[2]中:将numpy作为np导入
[3]中:数据点=365*24*12
在[4]中:data=pd.DataFrame({“data”:np.random.randn(datapoints)},index=pd.date\u range(start=“2015-01-01”,freq=“5min”,periods=datapoints))
在[5]中:data=data.between_time(“07:00”、“18:00”)
在[6]中:数据[“日期”]=data.index.Date
在[7]中:data[“Time”]=data.index.Time
在[8]中:数据[:4]
出[8]:
数据日期时间
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
在[9]中:data=data.pivot(index=“Time”、columns=“Date”、values=“data”)
[10]中:data.iloc[:,0:4]。绘图(子绘图=True)
出[10]:
数组([,,
,
,
],dtype=object)

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)