【问题标题】:pandas plot timeseries for overlapping hours熊猫绘制重叠时间的时间序列
【发布时间】:2016-10-18 18:24:41
【问题描述】:

我正在尝试对负载变化进行可视化分析。我已经从 CSV 文件中读取数据,将索引转换为日期时间格式,效果很好。数据为全年每 5 分钟一次,关注白天(当前选择为 07:00-18:00)小时。

我可以使用选定的时间 (pandas timeseries between_datetime function?) 顺序绘制时间序列数据,这是我试图解决的问题之一。

我现在想做的是:用固定的(白天)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])

我想我可以使用循环来绘制它,但是更有效的/pythonic/pandas 方法会很棒。

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

谢谢

【问题讨论】:

    标签: pandas matplotlib


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2014-06-25
      • 2015-06-10
      • 2019-05-02
      相关资源
      最近更新 更多