熊猫数据帧组由图组成

时间:2017-01-05 21:24:39

标签: 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    
...          
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_closeDate的代码进行绘图?

2 个答案:

答案 0 :(得分:47)

简单的情节,

你可以使用:

df.plot(x='Date',y='adj_close')

或者您可以事先将索引设置为Date,然后可以轻松绘制所需的列:

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

如果您想要一个按ticker列出一个系列的图表

您需要groupby之前:

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

enter image description here

简单的情节,

你可以使用:

df.plot(x='Date',y='adj_close')

或者您可以事先将索引设置为Date,然后可以轻松绘制所需的列:

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

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

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

enter image description here

答案 1 :(得分:0)

类似于上述朱利安(Julien)的回答,我在以下方面取得了成功:

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中进行更多控制,则此解决方案可能更相关。

  

https://stackoverflow.com/a/52526454/10521959

启发的解决方案