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