首页 > 解决方案 > 为什么 Parse_Dates 在 Python 中给我错误的结果?

问题描述

我正在尝试使用 Matplotlib 绘制时间序列图。我有一个 2 列的 CSV 文件,其中包含股票的日期和收盘价(日期的格式为:'31/07/2020'。

首先,我解析我的日期列以使其成为日期时间列表。然后我通过以下代码绘制我的数据:

data = pd.read_csv('data.csv', parse_dates=['DATE'])

date = data['DATE']
stock1 = data['GEN_ELECTRIC']
stock2 = data['NETFLIX']

plt.figure()
plt.plot(date, stock1)
plt.savefig('Wrong.png')

我附上了名为“Wrong.png”的图表。如果我省略 parse_dates,我会得到一个正确的图表,称为“Correct.png”。

我的问题是,“Wrong.png”只有几年的 x-ticks,Python 知道它在谈论日期。使用正确的版本,情况并非如此。此外,“正确”版本还显示月份和日期,这不是必需的。有谁知道,为什么我得到一个错误的图表?我将如何解决这个问题?

PS。不要介意正确.png中重叠的x轴,我可以用plt.locator修复它。

任何帮助,将不胜感激。提前致谢!

错误的

正确的

标签: pythonpython-3.xpandasnumpymatplotlib

解决方案


parse_dates默认格式不是欧式风格的 DD/MM/YYYY。如果您的第一行是 2020 年 1 月 7 日,它可能会将其解释为 1 月 7 日。稍后在 30/07/2020 遇到时,parse_dates 会遇到问题并返回对象数据类型。要正确使用 parse_dates,请将dayfirst=True属性添加到 read_csv。这是声明 DD/MM 格式的正确方法。然后 matplotlib 应该处理其余的罚款


推荐阅读