我想绘制熊猫数据框的第二列。该数据帧是用两个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:无效语法”
答案 0 :(得分:1)
您可以将X
设置为索引并绘制:
df.set_index('X1').iloc[::2].plot()
另一种没有set_index
的方式:
Ycols = df.filter(like='Y').columns
df.plot(x='X1', y=Ycols)