我用openpyxl将Excel电子表格中的数据读入pandas数据框,称为“tides”。该数据集包含超过32000行数据(英国每15分钟测量一次潮汐时间)。其中一列包含日期和时间信息(变量名为“datetime”),另一列包含潮汐高度(称为“tide”):
我想沿着x轴绘制日期时间,在y轴上绘制潮汐:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import openpyxl
import datetime as dt
from matplotlib.dates import date2num
<-- Data imported from Excel spreadsheet into DataFrame using openpyxl. -->
<-- Code omitted for ease of reading. -->
# Convert datatime variable to datetime64 format:
tides['datetime'] = pd.to_datetime(tides['datetime'])
# Plot figure of 'datetime' vs 'tide':
fig = plt.figure()
ax_tides = fig.add_subplot(1,1,1)
ax_tides.plot_date(date2num(phj_tides['datetime']),phj_tides['tide'],'-',xdate=True,label='Tides 2011',linewidth=0.5)
min_datetime = dt.datetime.strptime('01/01/2011 00:00:00',"%d/%m/%Y %H:%M:%S")
max_datetime = dt.datetime.strptime('03/01/2011 23:59:45',"%d/%m/%Y %H:%M:%S")
ax_tides.set_xlim( [min_datetime, max_datetime] )
plt.show()
图中只显示了最初几天的数据。然而,从一天到另一天的变化,奇怪的事情发生了;在第一天的最后一个点之后,这条线消失在右边,然后返回到第二天的第一个点上,但是数据在y轴上的绘制不正确。这在整个数据集中都会发生。打印输出显示数据似乎正常。在
^{pr2}$我不知道该怎么解释。有人能解释一下发生了什么,为什么会发生,我该如何纠正?在
提前谢谢。在
菲尔
哦!终于找到了答案。最初的工作流程相当复杂。我将数据存储在Excel电子表格中,并使用openpyxl从命名单元格区域读取数据。然后将其转换为pandas数据帧。日期和时间变量已使用pandas'.to\u datetime()函数转换为datetime格式。最后用matplotlib绘制数据。当我准备好要发布到这个论坛的数据(如rauparaha所建议的),并将脚本缩减到基本要素时,我注意到第1天的数据是在2011年1月1日绘制的,而第2天的数据是在2011年2月1日绘制的。如果你看看原始帖子的输出,日期是混合格式的:给出的最后一个日期是“2011-12-31”(即年-月-日),但代表2011年1月2日的第二个日期是“2011-02-01”(即年-日-月)。在
所以,看起来我误解了pandas.to\u datetime()函数如何解释日期时间信息。我故意没有设置infer_datetime_format属性(默认值=False),并且假设任何问题都会被标记出来。但熊猫似乎认为日期是以月为先的形式。除非它们不是,在这种情况下,它会更改为“第一天”格式。我应该捡起来的!在
通过提供一个显式定义日期时间格式的字符串,我已经纠正了这个问题。一切又好起来了。在
再次感谢你的建议。并为任何混淆道歉。在
干杯。在
我无法复制您的错误,但也许我的工作伪代码可以帮助诊断问题。我生成了虚拟数据并用以下代码绘制:
^{1}$我的数据是这样的
^{pr2}$并生成以下绘图
相关问题 更多 >
编程相关推荐