根据pandas中的索引绘制一行中的所有值

时间:2017-03-06 04:36:45

标签: python pandas dataframe

我有一个daframe df

    beat1   beat2   beat3   beat4   beat5   beat6   beat7   beat8   beat9  
0  0.6839  0.8879  0.7543  0.4805  0.8528  0.6982  0.5520  0.6154  0.6579   
1  1.0380  0.4868  0.3099  0.4994  0.7509  0.4649  0.5080  0.4040  0.7537   
2  0.7116  0.8063  0.6754  0.7365  0.9517  0.6420  0.8108  0.9082  0.7132   
3  0.7296  0.7389  0.7227  0.7623  0.7424  0.7457  0.8250  0.7064  0.7792   
4  0.8912  0.8617  0.8189  0.8118  0.6574  0.8882  0.6544  0.8296  0.9344

现在,我想将给定行中的所有值绘制为索引值[0, 1, 2, 3, 4]的函数。我可以使用以下代码实现此目的:

for i in df.index:
    vals = df.loc[i]
    for val in vals:
        plt.scatter(i, val,c='g')

plt.show()

但是,必须有一种方法可以在不使用嵌套for循环的情况下执行相同操作,因为对于较大的数据帧来说它很慢,我需要多次执行此操作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以将散点图应用于每一行:

df.apply(lambda x: plt.scatter(x.index, x, c='g'))
plt.show()

答案 1 :(得分:0)

plt.scatter(df.index.values.repeat(len(df.columns)), df.values.ravel())

enter image description here

df.stack().reset_index(0).plot.scatter('level_0', 0)

enter image description here