如何使用 pandas 在同一个线图中绘制多个列的相互关系?

问题描述 投票:0回答:1

Dataset 我想使用“文件名”作为 x 轴,并将以 .csv 结尾的每一列作为彼此之上的 y 数据。

Hopeful end result我正在努力实现这样的结果,但到目前为止我还没有运气

## packages used
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import re
QtzLOD1 = pd.read_csv (r"doc.csv")

x = QtzLOD1["filename"]
y = QtzLOD1.iloc[0:,1:14]
for i in range(len(x)):
    plt.plot(x[i], y[i], marker=".")

fig=plt.plot()
fig.savefig(p)

我收到密钥错误 0 非常感谢任何帮助,谢谢!

python pandas for-loop matplotlib line-plot
1个回答
0
投票

如果不知道 *.csv 文件中数据的结构,就很难说。但根据我的理解,问题是 x[i] 是一个系列,但 y[i] 可以是数据帧的一部分(基本上是一个 DataFrame)。您可能需要使用 .to_numpy() 方法将其转换为数组,然后从那里开始工作。但仍然需要注意图中的 x 和 y 应该具有相同的大小和维度。 我给你提供了一个可能有帮助的例子,类似于你的数据。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
element=["Be" ,"Na" ,"Ti", "Rb"]
test1=list(np.random.randint(1,1000,4))
test2=list(np.random.randint(1,1000,4))
test3=list(np.random.randint(1,1000,4))
test4=list(np.random.randint(1,1000,4))
test5=list(np.random.randint(1,1000,4))
data=  {"element":element,"test1":test1,"test2":test2,\
"test3":test3,"test4":test4,"test5":test5}
data_frame1=pd.DataFrame(data)
x=data_frame1["element"].to_numpy()
y=data_frame1.iloc[1:,0:]
num_test=len(data_frame1.iloc[0,1:])
for i in range(5):
   y=data_frame1.iloc[::,i+1].to_numpy()
   plt.plot(x,y)
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.