我有这样的数据:
col1 ;col2
2001-01-01;1
2001-01-01;2
2001-01-02;3
2001-01-03;4
2001-01-03;2
2001-01-04;2
我正在使用pd.read_csv(...)
在Python / Pandas中将其读入DataFrame。
现在我想在y轴上绘制col2,在x轴上绘制col1。我搜索了很多,但没有太多非常有用的页面详细描述。我发现matplotlib当前不支持日期存储在(datetime64)中的数据格式。
我尝试像这样转换它:
fig, ax = plt.subplots()
X = np.asarray(df['col1']).astype(DT.datetime)
xfmt = mdates.DateFormatter('%b %d')
ax.xaxis.set_major_formatter(xfmt)
ax.plot(X, df['col2'])
plt.show()
但这不起作用。 什么是最好的方法? 我只能在那里找到位和位,但没有真正完整的工作,更重要的是,最新版本的pandas / numpy / matplotlib与此功能相关的最新资源。
我也有兴趣将这个绝对日期转换成连续的日期指数,即: 2001-01-01 的开始日是Day 1 ,因此数据如下所示:
col1 ;col2 ; col3
2001-01-01;1;1
2001-01-01;2;1
2001-01-02;3;2
2001-01-03;4;3
2001-01-03;2;3
2001-01-04;2;4
.....
2001-02-01;2;32
非常感谢你。
答案 0 :(得分:1)
Pandas.read_csv支持parse_dates = True(默认当然为False)这样可以节省您单独转换日期的时间。
对于像这样的简单数据帧,pandas plot()函数也能很好地工作。 例如:
dates = pd.date_range('20160601',periods=4)
dt = pd.DataFrame(np.random.randn(4,1),index=dates,columns=['col1'])
dt.plot()
plt.show()
答案 1 :(得分:0)
好的,据我所知,不再需要直接使用matplotlib
,而是pandas本身已经提供了可用作数据框对象方法的绘图函数,请参阅{{ 3}}。这些函数本身使用matplotlib,但更容易使用,因为它们自己正确处理数据类型: - )