我有以下 Pandas 数据框“df”:
---------------------------------------------------
C1 C2 C3 C4 Type
---------------------------------------------------
Name
---------------------------------------------------
x1 a1 b1 c1 d1 'A'
x2 a2 b2 c2 d2 'A'
x3 a3 b3 c3 d3 'B'
x4 a4 b4 c4 d4 'B'
x5 a5 b5 c5 d5 'A'
x6 a6 b6 c6 d6 'B'
x7 a7 b7 c7 d7 'B'
---------------------------------------------------
此数据框中有 6 列:Name、C1、C2、C3、C4 和 Type
。我想使用按“类型”列分组的数据框生成两条线图(单独的图 - 不是同一图上的两条线)。基本上,我想根据按类型分组的名称绘制 C1 的值。所以,在一张图上,我想在一张图上有 (x1, c1), (x2, c2), (x5, c5) 和 (x3,c3), (x4, c4), (x6, c6), 和 (x7,c7)
在另一个。
请注意,Name 和其他列在不同的行中。
我在 SO 上发现了一个关于绘制箱线图的类似问题 here ,所以我尝试修改它以绘制线图。我尝试使用 df.plot(column='C1', by='Type')
但似乎没有属性 'column' 用于 plot()
。
关于如何实现我的目标有什么想法吗?
最佳答案
您可以将“Type”列添加到索引中,并将其拆栈,以便根据 Type 的值将 C1 的值分成两列,然后绘制它们,例如:
import pandas
df = pandas.DataFrame({'Values': randn(10), 'Categories': list('AABABBABAB')}, index=range(10))
df.set_index('Categories', append=True).unstack().interpolate().plot(subplots=True)
请注意,对于线图,您需要“interpolate()”。
或者,您可以根据“类型”(在这些示例中为“类别”)的值选择数据并分别绘制它们,例如:
fig, axes = plt.subplots(ncols=2)
df[df.Categories=='A'].Values.plot(ax=axes[0])
df[df.Categories=='B'].Values.plot(ax=axes[1])
关于python - 绘制按列分组的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33951056/