python - 绘制按列分组的 Pandas 数据框

标签 python pandas matplotlib plot

我有以下 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/

相关文章:

python - 如何重新连接到 RabbitMQ?

python - 递归地展平列表

python - 在 Python/Pandas 中什么时候调用 object.method 和 module.function?

python - 如何绘制 seaborn 中的前 5 个值

Python:如何拟合曲线

python-3.x - 如何用两条不同颜色的线绘制xlabel?

python - 如何修改数据库管理器中的重复表单?

python - 多处理池管理器命名空间 EOF 错误

python - 如何根据pandas中的第三个数据框连接两个数据框?

python - Pandas DataFrame 步骤图 : where ="post"