绘制大熊猫DataFrames作为在Python/Matplotlib

问题描述:

x轴的单天我得的数据是这样的:绘制大熊猫DataFrames作为在Python/Matplotlib

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 /大熊猫。 现在我想在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日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 

非常感谢您提前。

好吧,据我所见,直接使用matplotlib就不需要了,但熊猫本身已经提供了绘图功能,可以用作数据框对象的方法,请参阅http://pandas.pydata.org/pandas-docs/stable/visualization.html。这些函数本身使用matplotlib,但更易于使用,因为它们本身可以正确处理数据类型:-)

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()