【问题标题】:Why does Parse_Dates give me the wrong results in Python?为什么 Parse_Dates 在 Python 中给我错误的结果?
【发布时间】:2020-10-02 20:27:29
【问题描述】:

我正在尝试使用 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修复它。

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

【问题讨论】:

  • 从 csv 读取时尝试传递 dayfirst=True

标签: python python-3.x pandas numpy matplotlib


【解决方案1】:

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

【讨论】:

  • 感谢您的详尽解释!我得到了它。 :)
猜你喜欢
  • 2013-03-09
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 2020-09-15
  • 2010-10-11
  • 2021-11-30
相关资源
最近更新 更多