【发布时间】:2018-12-23 17:05:36
【问题描述】:
我有一个数据集
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: 'module' 对象没有属性 'dates'
如何将datetime 格式更改为numeric 以便形成绘图?
【问题讨论】:
-
我对您的问题进行了编辑以澄清措辞。此编辑正在等待同行评审。我认为您问题中的前两个大块(原始 df 和调用 pd.to_datetime 的 pandas 代码)与您的问题完全不相关,可能也应该删除,但我暂时将它们留在了。
-
@surya-rahul 你可能对this chart 感兴趣。为什么要第二次转换它而不是使用您的日期时间列
plt.plot(df.time, df.MachineId, "ro")? -
一般来说,混合使用 pandas 和 matplotlib 日期时间对象是个坏主意:stackoverflow.com/a/44214830/8881141
-
@Mr.T
plt.plot(df.time, df.MachineId, "ro")给出了散点图,但这里的参数“ro”是什么?在这种情况下如何在这里获取其他图,即直方图,箱线图?? -
@suryarahul plt.plot 的文档:(matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html)解释了文本字符串(在本例中为“ro”)控制标记的颜色和样式。 matplotlib 文档还将告诉您如何制作箱线图。但是,这仍然无法解决 AttributeError,我的回答解释了它的原因和解决方案,所以请接受它。
标签: python pandas datetime numeric