【问题标题】:How to plot only business hours and weekdays in pandas如何在熊猫中仅绘制营业时间和工作日
【发布时间】:2020-05-18 17:18:44
【问题描述】:

我有每小时的库存数据。 我需要 a) 对其进行格式化,以便 matplotlib 忽略周末和非营业时间和 b) 每小时频率。

问题: 目前,图表看起来很拥挤,我怀疑这是因为 matplotlib 考虑的是 24 小时而不是 8 小时,以及每周 7 天而不是工作日。

我如何告诉 pandas 只考虑营业时间,MF?

我如何绘制数据: 我正在遍历价格数据数据框列表,绘制每个数据框:

mm = 0
for ii in df:

    Ddate = ii['Date']
    Pprice = ii['Price']
    d = Ddate.to_list()
    p = Pprice.to_list()

    dates = make_dt(d)
    prices = unstring(p)
    plt.figure()
    plt.plot(dates,prices)
    plt.title(stocks[mm])
    plt.grid(True)
    plt.xlabel('Dates')
    plt.ylabel('Prices')
    mm += 1

图表:

【问题讨论】:

标签: pandas datetime matplotlib time-series data-visualization


【解决方案1】:

要获取工作日,您可以使用以下函数:

df["IsBDay"] = bool(len(pd.bdate_range(df['date'], df['date'])))

//上面的行应该在DF中添加一个新列作为IsBday。 //您也可以使用 Lambda 表达式来检查并为 BDay 添加新列。

df['IsBDay'] = df['date'].apply(lambda x: 'True' if bool(len(pd.bdate_range(x, x))) else 'False')

现在创建一个只有 True IsBday 列值和其他列的新 DF。

df[df.IsBday != 'False']

现在您的 DF 已准备好进行绘图了。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多