我想使用“文件名”作为 x 轴,并将以 .csv 结尾的每一列作为彼此之上的 y 数据。
## 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 非常感谢任何帮助,谢谢!
如果不知道 *.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()