我有一个数据集
time MachineId
1530677359000000000 01081081
1530677363000000000 01081081
1530681023000000000 01081090
1530681053000000000 01081090
1530681531000000000 01081090所以我的密码是:
import pandas as pd
from datetime import datetime
import time
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
df= pd.read_csv('acn.csv')`
df['time']=pd.to_datetime(df['time'], unit='ns')` #converting the epoch nanosec time to datetime-format
print(df.head())输出:
time MachineId
0 2018-07-04 04:09:19 1081081.0
1 2018-07-04 04:09:23 1081081.0
2 2018-07-04 05:10:23 1081090.0
3 2018-07-04 05:10:53 1081090.0
4 2018-07-04 05:18:51 1081090.0 现在,我想将我的时间数据更改为数字,以便在时间和机器id之间生成一个图。
dates = plt.dates.date2num(df['time'])
df.plot(kind='scatter',x='dates',y='MachineId')
plt.show()它引发的错误如下:
AttributeError:“模块”对象没有属性“日期”
如何将datetime格式更改为numeric,从而形成一个绘图?
发布于 2018-07-16 08:25:53
您得到了以下错误:
AttributeError:“模块”对象没有属性“日期”
您的错误消息是告诉您matplotlib.pyplot.dates (plt.dates)不存在。(错误说有一个模块您正在调用“dates”,但它并不存在)。
因此,您需要在担心转换之前修复该错误。你是想给matplotlib.dates.date2num打电话吗?在您的代码中,您有以下内容:
将matplotlib.dates作为mdate导入
也许你是想给mdate.date2num打电话?这应该可以消除AttributeError。
如果这对你不起作用,你可以尝试一下其他评论者提供的链接中的建议,使用熊猫to_pydatetime。我不熟悉它,但是在这个示例页中,它作为Series.dt.to_pydatetime()被访问。
所有这些转换都是必要的,因为您正在尝试使用df.plot;也许您应该考虑直接调用matplotlib。例如,您可以只使用plt.plot_date吗?(下面是链接到它)。熊猫是优秀的,但它的绘图界面还不如其他的成熟。举个例子(我并不是说这正是你遇到的问题),但这是是熊猫中一个已知的关于日期的错误。这里是一个较旧的堆栈溢出线程,在该线程中,有人为您提供了一个plt.plot_date方法。
发布于 2018-07-16 07:53:56
你也可以直接绘制日期。例如,如果希望将日期放在x轴上,则在ax.plot(df.time, ids)中传递日期。我觉得这可能是最接近你想要的东西。
https://stackoverflow.com/questions/51356927
复制相似问题