You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib的datetime轴上移除无数据的时间段?

问题原因

已删除时间段仍在图表中显示的核心原因是resample('d')操作会自动补全时间索引覆盖范围内的所有连续日期,即使对应日期没有原始数据,也会生成值为NaN的行,这些空值行对应到x轴就会显示为空白的时间段。

解决方法

在resample操作完成后,直接删除对应列的空值行即可,修改后的代码如下:

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

dfStd = df.resample('d').std()
# 删除Feed_tph列为空的行,移除无数据的时间段
dfStd = dfStd.dropna(subset=['Feed_tph'])

fig, ax = plt.subplots(figsize=(16,3))
bp = sns.barplot(x = dfStd.index.strftime('%d-%b'), y='Feed_tph', data=dfStd , color='darkorange', ax=ax)
ax.set_ylabel('Dry Feed [tph]')
ax.set_xlabel('')
plt.xticks(rotation = 90)
plt.show()

如果需要同时校验多个统计列的非空性,将对应列名加入dropna的subset参数列表即可。

可选替代方案

你也可以直接按日期分组计算标准差,从根源避免生成多余的空日期行:

# 按日期分组计算标准差,不会自动补全缺失的无数据日期
dfStd = df.groupby(df.index.date).std()
# 将索引转回datetime格式,方便后续转字符串格式化
dfStd.index = pd.to_datetime(dfStd.index)

内容的提问来源于stack exchange,提问作者Carlos Tolvett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 11:15:04