Python 熊猫数据帧分组图

Python 熊猫数据帧分组图,python,pandas,matplotlib,dataframe,Python,Pandas,Matplotlib,Dataframe,我有一个数据帧,其结构如下: Date ticker adj_close 0 2016-11-21 AAPL 111.730 1 2016-11-22 AAPL 111.800 2 2016-11-23 AAPL 111.230 3 2016-11-25 AAPL 111.790 4 2016-11-28 AAPL 111.570 ..

我有一个数据帧,其结构如下:

          Date   ticker  adj_close 
0   2016-11-21     AAPL    111.730     
1   2016-11-22     AAPL    111.800    
2   2016-11-23     AAPL    111.230    
3   2016-11-25     AAPL    111.790     
4   2016-11-28     AAPL    111.570    
...          
8   2016-11-21      ACN    119.680            
9   2016-11-22      ACN    119.480              
10  2016-11-23      ACN    119.820              
11  2016-11-25      ACN    120.740 
...             
我如何根据股票代码来绘制
adj_close
Date

简单的情节, 您可以使用:

df.plot(x='Date',y='adj_close')
或者,您可以事先将索引设置为
Date
,这样就很容易绘制所需的列:

df.set_index('Date', inplace=True)
df['adj_close'].plot()

如果您想要一张带有一个序列的图表,请按
股票代码

您需要在以下情况之前:


如果您想要包含单个子批次的图表:

与上面朱利安的回答类似,我在以下方面取得了成功:

fig, ax = plt.subplots(figsize=(10,4))
for key, grp in df.groupby(['ticker']):
    ax.plot(grp['Date'], grp['adj_close'], label=key)

ax.legend()
plt.show()
如果您希望在matlab中进行更多控制,则此解决方案可能更相关

解决方案的灵感来自:


谢谢你的回答。但这不是我想要的。我已经有了。但是,如果一个面板对应于一个股票代码,我如何制作每个面板?adj_close vs Date?谢谢,这就是我一直在寻找的。我还添加了另一个选项,在不同的子地块上绘图,以防万一。非常感谢,这看起来更好。我还有一个问题。如果我计算以下等式
TimeSeriesLogReturns=np.log(getTimeSeriesLevel['adj_close']/getTimeSeriesLevel['adj_close'].shift(1))
我想让它与tikcer相关。我如何实现它,因为目前它不工作…好的,没问题。将添加另一个帖子。不过非常感谢。嗨,我发现这个解决方案非常有用!但是,当我试图为每个x轴标签并排绘制“条形图”时。你的上面用不同的颜色为标签绘制了一个条形图…有没有一种优雅的方法来为标签中的每个值并排绘制条形图?不确定我是否遵循@AlexWalton,你能进一步解释吗?确切地说,我在寻找什么,因为图例是groupbycolumn@YaakovBressler没关系,我用这个搭配seaborn和hue,它工作得很好!
grouped = df.groupby('ticker')

ncols=2
nrows = int(np.ceil(grouped.ngroups/ncols))

fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(12,4), sharey=True)

for (key, ax) in zip(grouped.groups.keys(), axes.flatten()):
    grouped.get_group(key).plot(ax=ax)

ax.legend()
plt.show()
fig, ax = plt.subplots(figsize=(10,4))
for key, grp in df.groupby(['ticker']):
    ax.plot(grp['Date'], grp['adj_close'], label=key)

ax.legend()
plt.show()