如何绘制通过多个键循环的字典DataFrame?

时间:2019-12-01 01:34:27

标签: python dictionary matplotlib plot

我有一个标记为data的数据帧字典:which holds information about stocks and their pricing/volumes, etc...

我想遍历并绘制所有键和特定值。我正在升级自己构建的原始程序,该程序仅适用于一只股票。我想通过为我的程序提供要使用的股票清单来将其提升到一个新的水平,在这种情况下,股票清单称为tickers = ["LRCX", "FB", "COF"]

下面是我的原始程序仅绘制一只股票(又称一个数据框)的方式。

 f, (ax1, ax2) = plt.subplots(1, 2, figsize=(14,5))
ax1.plot(dte_df["date"], dte_df["Close"])
ax1.set_xlabel("Date", fontsize=12)
ax1.set_ylabel("Stock Price")
ax1.set_title(f"{ticker} Close Price History")

# first Subplot (layer two)
ax1.plot(dte_df["date"], dte_df["High"], color="green")
ax1.set_xlabel("Date", fontsize=12)
ax1.set_ylabel("Stock Price")
ax1.set_title(f"{ticker} High Price History")

# first Subplot (layer three)
ax1.plot(dte_df["date"], dte_df["Low"], color="red")
ax1.set_xlabel("Date", fontsize=12)
ax1.set_ylabel("Stock Price")
ax1.set_title(f"{ticker} Low Price History")

# Second Subplot
ax2.plot(dte_df["date"], dte_df["Volume"], color="orange")
ax2.set_xlabel("Date", fontsize=12)
ax2.set_ylabel("Stock Price")
ax2.set_title(f"{ticker} Volume History")
plt.show()

上面的代码有两个子图。每日股票价格(高,低,收盘价)放在一个图上,然后在另一数量上。我正在尝试复制此代码,但是要使用字典循环遍历键,而不是仅使用一只股票的数据框。我从来没有以这种身份来处理字典,我非常感谢事先提供的帮助和指导,

干杯!

1 个答案:

答案 0 :(得分:0)

这比matplotlib更像是一个熊猫问题,但无论如何。

有几种方法可以遍历数据框。

如果您具有列名列表,则可以简单地使用for循环:

l0 = ["L1",'L2']
l1 = ["A1",'A2','A3']

df = pd.DataFrame(np.random.random(size=(10,6)))
df.columns = pd.MultiIndex.from_product([l0,l1])

display(df)

for l in l0:
    print('==== {:s} ====='.format(l))
    display(df.xs(l,axis=1))

如果要更通用,可以使用groupby并迭代结果:

for (l,temp_df) in df.groupby(level=0, axis=1):
    print('==== {:s} ===='.format(l))
    temp_df = temp_df.droplevel(level=0, axis=1)
    display(temp_df)