python - 为什么 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修复它。
任何帮助,将不胜感激。提前致谢!
解决方案
parse_dates
默认格式不是欧式风格的 DD/MM/YYYY。如果您的第一行是 2020 年 1 月 7 日,它可能会将其解释为 1 月 7 日。稍后在 30/07/2020 遇到时,parse_dates 会遇到问题并返回对象数据类型。要正确使用 parse_dates,请将dayfirst=True
属性添加到 read_csv。这是声明 DD/MM 格式的正确方法。然后 matplotlib 应该处理其余的罚款
推荐阅读
- c# - 如何将 xaml 页面转换为 pdf 文件并将其显示在 UWP 应用程序内的 pdf 查看器中?
- algorithm - 在社交网络中寻找密切关系的算法(图论)
- python - 如何在python中找到3D数组的局部最大值?
- node.js - 如何动态更改 Mongoose 提供程序中的集合或数据库的名称,Nestjs?
- asp-classic - 设置 Saxon 以在 Windows Server 2008 中运行
- mysql - 如何从sql中的不同表创建新表?
- ssl - 在 Istio 中启用 mTLS 有什么好处?
- python - Keras/Tensorflow - conv2d 的傅立叶逐点乘法实现比空间卷积慢 4 倍
- javascript - AngularJS:使用货币/国家代码动态格式化用逗号分隔的货币
- javascript - Chrome 扩展通过 ID 获取元素无法读取