Python 绘制堆叠数据帧
我想使用pandas.DataFrame.plot.bar(stacked=True)功能来可视化我的数据帧(见下表) 选择1个周期,我希望每个“波”的“num”被叠加在“电极”上。理想情况下,每个周期将绘制在单独的子地块中。当前代码:Python 绘制堆叠数据帧,python,pandas,dataframe,plot,stacked-chart,Python,Pandas,Dataframe,Plot,Stacked Chart,我想使用pandas.DataFrame.plot.bar(stacked=True)功能来可视化我的数据帧(见下表) 选择1个周期,我希望每个“波”的“num”被叠加在“电极”上。理想情况下,每个周期将绘制在单独的子地块中。当前代码: one = df[df["Period"]=="1"] one.plot.bar(stacked=True); plt.show() 在下面的示例中,这意味着a、b、c、d代表不同的波,0-9代表不同的电极 我认为这是一个按照plot.bar的期望重新排序
one = df[df["Period"]=="1"]
one.plot.bar(stacked=True);
plt.show()
在下面的示例中,这意味着a、b、c、d代表不同的波,0-9代表不同的电极
我认为这是一个按照plot.bar的期望重新排序数据帧的问题,但我不确定如何继续
下面是数据帧的前30行
Electrode Period Wave num
0 7 10 Beta 1
1 8 12 Beta 1
2 15 10 High gamma 1
3 4 10 Theta 1
4 11 4 High gamma 1
5 12 13 High gamma 3
6 11 4 Delta 3
7 11 4 Theta 0
8 14 0 Delta 2
9 14 1 Beta 0
10 11 6 Low gamma 1
11 1 9 Theta 0
12 8 1 Theta 0
13 5 8 Theta 0
14 10 0 Low gamma 2
15 13 12 Alpha 1
16 8 13 Alpha 1
17 10 0 Beta 1
18 7 5 Alpha 2
19 10 3 Theta 0
20 14 6 High gamma 2
21 4 11 Beta 1
22 4 5 Delta 1
23 4 10 High gamma 2
24 10 0 High gamma 3
25 12 4 Alpha 1
26 8 8 Theta 0
27 8 11 Beta 1
28 6 2 Delta 2
29 12 7 Low gamma 3
我认为需要和聚合意味着
与重塑:
one = df[df["Period"]==10].groupby(['Electrode','Wave'])['num'].mean().unstack()
one.plot.bar(stacked=True)
对于所有子地块:
grouped = df.groupby('Period')
nrows = int(math.ceil(len(grouped)/2.))
fig, axs = plt.subplots(nrows,2, figsize=(12,30))
for (name, df), ax in zip(grouped, axs.flat):
df.groupby(['Electrode','Wave'])['num'].mean().unstack().plot.bar(stacked=True, ax=ax)
根据jezrael提出的错误,我找到了以下解决方案:
df[df["Period"]=="1"].pivot_table(values="num", index=["Electrode"], columns="Wave", aggfunc='mean').plot.bar(stacked=True)
我收到了这个错误:“ValueError:索引包含重复的条目,无法重塑”。我的“df.index”生成“RangeIndex(start=0,stop=1344,step=1)”我正在处理问题的第二部分,之前已知的周期数是多少?它在不同组之间变化,但我们可以假设为6个周期,所以请测试我的解决方案,如果有问题,请告诉我。谢谢