如何绘制熊猫数据框的第二列?

时间:2019-10-01 10:32:50

标签: python pandas plot

我想绘制熊猫数据框的第二列。该数据帧是用两个for循环创建的。外循环遍历目录中的.xls文件,而内循环遍历单个excel表的每一页。然后将这些数据像这样写在数据框中:

X1 Y1 Z1 Y2 Z2 Y3 Z3 ....

其中数字代表.xls文件的相应工作表。

现在,我想针对x列绘制所有Y数据。 下面的代码显示了如何针对X1绘制Y1。

在此代码的旧版本中,所有Y数据都具有相同的名称,即“ Y”。这使绘制非常容易,因为我只需要说y ='Y',并且每个对应的列都会自动绘制。但这有一个缺点,就是图例不像我希望的那样,因为每个图的每个标签都相同,即“ Y”。但是我想在图例中使用不同的标签,即“ Y1”等。这就是为什么我重命名列的原因,从而导致从列1开始绘制第二列的问题。

所以,问题是如何绘制熊猫数据框的第二列。

预先感谢您, Zwieback

通常,假设我知道我有多少Y数据,这可能会很安静。但不幸的是,每个.xls文件中都有不同数量的工作表。 不然
        df.plot(x = 0,y = [1,3,5],ax = ax1) 如果Y数据有三列,则可以使用。

if index %2 ==0:
    fig = plt.figure()
    ax1 = fig.add_subplot(121)
    ax2 = fig.add_subplot(122)
    plt.subplots_adjust(wspace=0.5)
    ax1.set_title(str(files_xls[parameter]), fontsize = 10)
    ax1.set_ylabel('I [$\mu$A]')
    ax1.set_xlabel('E [V/m]')
    df.plot(x=0,y=1, ax=ax1)
    plt.show()
if index %2 ==1:
    ax2.set_title(str(files_xls[parameter]), fontsize = 10)
    ax2.set_ylabel('I [$\mu$A]')
    df.plot(x=0, y=1, ax=ax2, legend=True).get_figure().savefig(str(files_xls[parameter])+'.png', dpi=450)
    plt.show()             
    plt.close(fig)

然后我尝试用切片将其绘制。 df.plot(x = 0,y = [:, 1 :: 2],ax = ax1) 但随后出现错误:“ SyntaxError:无效语法”

1 个答案:

答案 0 :(得分:1)

您可以将X设置为索引并绘制:

df.set_index('X1').iloc[::2].plot()

另一种没有set_index的方式:

Ycols = df.filter(like='Y').columns
df.plot(x='X1', y=Ycols)