这可能有一个非常明显的修复。我使用的是 Python 2.7
,并且使用的是 Spyder 3.2.4
。我试图通过读取 csv 文件然后绘制它来绘制非常简单(尽管很大)的数据位。 csv“df”
为 [6369 行 x 2 列]
。我的问题是,由于某种原因,下面的代码只给了我一个 x=y graph
。如果我将 row[0]
中的 0's
更改为 1's
,它会显示 ValueError: invalidliteral for int() with base 10:“我”
这是代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('SDISKSTATS_timeMassDisk.csv', delimiter=',')
x=[]
y=[]
for row in df:
x.append(int(row[0]))
y.append(int(row[0]))
plt.plot(x,y,label='csv')
plt.xlabel('x')
plt.ylabel('y')
plt.title('pls let this work')
plt.legend()
plt.show()
And here is the plot that it produces
感谢您提供的所有帮助。
最佳答案
使用for row in df:
您可以迭代数据帧的列,而不是行。要迭代行,您可以使用 for i,row in df.iterrows():
。
因此,一个工作示例可能如下所示:
import pandas as pd
import matplotlib.pyplot as plt
t = pd.DataFrame({"x":[1,2,3,4],"y":[5,3,4,2]})
t.to_csv('SDISKSTATS_timeMassDisk.csv', sep=',', index=False)
df = pd.read_csv('SDISKSTATS_timeMassDisk.csv', sep=',')
x=[]
y=[]
for i,row in df.iterrows():
x.append(int(row.values[0]))
y.append(int(row.values[1]))
plt.plot(x,y,label='csv')
plt.xlabel('x')
plt.ylabel('y')
plt.title('pls let this work')
plt.legend()
plt.show()
然而,迭代似乎没有必要。您可以从数据框中取出列并直接绘制它们:
import pandas as pd
import matplotlib.pyplot as plt
t = pd.DataFrame({"x":[1,2,3,4],"y":[5,3,4,2]})
t.to_csv('SDISKSTATS_timeMassDisk.csv', sep=',', index=False)
df = pd.read_csv('SDISKSTATS_timeMassDisk.csv', sep=',')
plt.plot(df["x"],df["y"],label='csv')
plt.xlabel('x')
plt.ylabel('y')
plt.title('pls let this work')
plt.legend()
plt.show()
或者直接在数据帧上调用plot
:
import pandas as pd
import matplotlib.pyplot as plt
t = pd.DataFrame({"x":[1,2,3,4],"y":[5,3,4,2]})
t.to_csv('SDISKSTATS_timeMassDisk.csv', sep=',', index=False)
df = pd.read_csv('SDISKSTATS_timeMassDisk.csv', sep=',')
df.plot(x="x",y="y", label="csv")
plt.ylabel('y')
plt.title('pls let this work')
plt.show()
关于python - 在python中导入/读取csv文件,然后绘图,给出x=y图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47592490/