如果我放大绘图,为什么x轴的时间会有所不同

问题描述 投票:1回答:1

我正在使用python pandas并读取包含多个列的csv文件。文件中还包括几个时间列。我把它们删除,只选择一列作为时间列。我将此列定义为索引,并将其设置为时间。

接下来是:我想绘制一个特定的列来获得第一印象。在数据中,我看到此列的值在10:42从600下降到零,请参见图像:

enter image description here

如果我绘制列,我得到以下图像

enter image description here

但是,如果我放大,我会得到以下内容

enter image description here

可以看出,图像存在巨大差异。似乎有些事情出了问题。

我有以下代码

data_304=pd.read_csv(r"data.csv",sep=";")
data_304=data_304.drop(["columns_to_drop"],axis=1)
data_304['date']=pd.to_datetime(data_304['date'])
data_304=data_304.set_index('piovan_1_dosing_creation_date')
data_304.index=data_304.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))

data_304["piovan_1_dosing_batchvalue_value"].plot()

我认为这可能是由于时区,但我找不到合适的方法。如果你能给我一个提示,我将非常感激:)

python pandas matplotlib
1个回答
0
投票

首先让我感谢你的帮助,我真的很感激:) @ImportanceOfBeingErnest:你是​​对的。放大和缩小的问题是由于我将我的索引dtype ='datetime64 [ns]'转换为使用该行的字符串

data_304.index=data_304.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))

由于我的索引上升到几毫秒,但我对毫秒而不是几秒钟不感兴趣,我寻找一种方法来显示秒。使用strftime()提到的abve是我发现的解决方案。不幸的是,我不够聪明,无法检查后台发生的情况,也找不到第一封邮件中描述的问题的答案。

经过一些搜索和聚焦后,我发现以下信息可以帮助我将毫秒设置为零,并保持类型dtype ='datetime64 [ns]',这是由

data_304.index=data_304.index.values.astype('<M8[m]')

将此应用于我的数据会更改索引时间外观

2019-04-24 05:41:13.809000至2019-04-24 05:41:00

如上所述,类型仍然是datetime64 [ns]

如果您想保留类型并截断索引,这可能会帮助您

干杯再次感谢:)