【问题标题】:Pandas plot gives correct plot, whereas matplotlib gives error熊猫图给出了正确的图,而 matplotlib 给出了错误
【发布时间】:2026-02-20 17:00:01
【问题描述】:

我有一个数据集,我正在尝试根据date-time 可视化数据。我通过

将日期时间字符串转换为date-time格式
 dataset = pd.read_csv('price.csv')
 dataset2=dataset[['Date','MCP']]
 dataset2['Date']=pd.to_datetime(dataset2['Date'])

现在在matplotlib中绘图

dataset2.plot()

但同样,matplotlib

plt.plot(dataset2.index,dataset2['MCP'])

有人可以向我解释发生了什么吗?我是否使用错误的方法或其他方法将string 转换为date-time

【问题讨论】:

  • 我们甚至不知道数据的样子。但我想问题是它没有按升序排序。
  • 抱歉,@ImportanceOfBeingErnest 我将发布数据快照,但它是以连续方式排序的。问题在于日期时间的格式。在一天结束时,它曾经将“天”部分视为月份,并一直延伸到下个月。我将编辑我的解决方案以详细包含问题说明。所以,如果你能帮助为什么 matplotlib 以这种方式考虑它并且熊猫正确地解释它
  • 我仍然认为问题是由未排序的数据引起的。当然,这可能是由于它没有被正确读取造成的。如果没有minimal reproducible example 的数据(不是实际数据,而是一些重现问题的数据),我认为没有人可以提供进一步的帮助。

标签: python-3.x pandas matplotlib plot python-datetime


【解决方案1】:

我找到了问题的解决方案,但是如果有人可以解释原因

dataset2['Date']=pd.to_datetime(dataset2['Date']).dt.strftime('%d/%m/%Y %H:%M:%S')
dataset2['Date']=pd.to_datetime(dataset2['Date'])

Pandas 默认将其转换为不同的格式,因此我必须将其转换回 matplotlib 可接受的正确格式的字符串,然后再次将字符串转换为日期时间。还有其他方法吗?

plt.plot(dataset2['Date'],dataset2['MCP'])

【讨论】:

    【解决方案2】:

    我弄清楚 matplotlib 解释了什么,它是: 使用简单的日期时间转换后

    dataset2['Date']=pd.to_datetime(dataset2['Date'])
    

    取前 96 个值(之后日期更改),它可以正常工作。 但在那之后(取第二天的值等等)它将时间戳的“天”部分视为月份,并将天延长到下个月(直到出现特定值)。

    P.S.- 必须写为第二个答案,因为在声誉 10 之前不允许嵌入超过 2 个图像

    【讨论】: