Pandas datetime64 问题(datetime 引入数据峰值)
Posted
技术标签:
【中文标题】Pandas datetime64 问题(datetime 引入数据峰值)【英文标题】:Pandas datetime64 problem (datetime introduces spikes in data) 【发布时间】:2020-08-17 22:05:31 【问题描述】:这是我关于 *** 的第一个问题,请善待 :) 我使用导入的 csv 文件和 pandas,并且非常喜欢使用 pandas 日期时间来工作和过滤数据帧的可能性。但是当使用日期作为 datetime64 时,我在以一种简洁的方式绘制数据时遇到了严重的问题。在使用熊猫地块或海生地块时。 我的 csv 看起来像这样:
date time Flux_ConNT_C Flux_ConB1 Flux_ConB2 Flux_ConB3 Flux_ConB4 Flux_ConB4
0 01.01.2015 00:30 2.552032129 2.193558665 1.0093326 1.013124869 1.159512896 1.159512896
1 01.01.2015 01:00 2.553308464 2.195533756 1.01003938 1.013935693 1.160672989 1.160672989
2 01.01.2015 01:30 2.554585438 2.197510626 1.010746655 1.014747166 1.161834243 1.161834243
3 01.01.2015 02:00 2.55586305 2.199489276 1.011454426 1.015559289 1.162996658 1.162996658
4 01.01.2015 02:30 2.557141301 2.201469707 1.012162692 1.016372061 1.164160236 1.164160236
当我绘制数据时
df.plot(figsize=(15,8))
我的输出是right output
但是当我将“日期时间”列更改为 'datetime64 时
df['date time'] = pd.to_datetime(df['date time'])
并使用相同的代码进行绘图,数据是用这些尖峰绘制的,它不可用false output
matplotlib 似乎有问题,但除了将register_matplotlib_converters()
放在情节之前,我找不到其他任何东西,这并没有改变任何东西。
我正在使用 Spyder IDE 和 Python 3.7,所有库都是最新的。
感谢您的帮助!
【问题讨论】:
【参考方案1】:你的问题不是奇迹,它根本无法重现。
-
您确定您的 csv 没有第一个索引列 0..4 的标题吗?
您确定 csv 的第 8 列与第 7 列重复吗?
您是如何实际导入此 csv 并构建数据框的?
第一个绘图仅在将范围索引 0..4 替换为“日期时间”列后才有效。在调用 plot 方法之前,您还对数据框应用了哪些其他转换?
您的 to_datetime 转换仅适用于列,而不适用于索引。为什么不分享您一直在使用的所有代码?
在 2 个图中,前 5 行没有区别。您为什么不共享 2 个图中实际上不同的数据行?
我会感谢您尝试正确地抽象问题。不幸的是,您遗漏了重要信息。根据您在此处显示的有限信息,完全没有问题。
为了澄清我的观点:您观察到的与 datetime64[ns] 转换无关,但可能与您认为不够重要而无法与我们分享的非常简单的事情有关。
看看How to create a Minimal, Reproducible Example。这个想法是:当您能够以可重现的方式准备问题时,您可能能够自己解决它。
【讨论】:
What should I do when someone answers my question? 感谢您的评论彼得,我的问题是df['date time'] = pd.to_datetime(df['date time'])
搞砸了日期并在数据框中的某些点将“y-m-d”切换为“y-d-m”,从而导致了这些峰值。通过在 pd.read_csv 参数中设置日期时间(如 df=pd.read_csv(file, parse_dates=['date time'], dayfirst=True)
)解决了该问题以上是关于Pandas datetime64 问题(datetime 引入数据峰值)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 datetime64[ns] 和 pandas 计算天数?
将 float64 列转换为 datetime pandas 时出错
pandas 中 datetime 和 datetime64[ns] 的比较
python时间处理模块datetime+dateutilnumpy时间处理模块datetime64以及pandas时间处理模块Timestamp的演化路径及常用处理接口