在Python中导入/读取CSV文件,然后绘制,给出X = Y绘图



这可能是一个非常明显的修复程序。我正在使用Python 2.7,并且正在Spyder 3.2.4中。我正在尝试通过阅读并绘制它来绘制csv文件中非常简单的(尽管很大)数据。csv "df"[6369 rows x 2 columns]。我的问题是,下面的代码只是出于某种原因给了我x=y graph。如果我将row[0]中的0's更改为1's,则说ValueError: invalid literal for int() with base 10: 'i'

这是代码:

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()

这是它产生的情节

谢谢您的所有帮助。

使用 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()

更新答案

假设您的CSV文件是这样的格式(没有列标题):

1E+08,1E+028 
2E+08,4E+028  
3E+08,9E+028

您可以使用数据帧本身绘制值,而无需创建任何list s。在下面的代码中,我命名了DataFrame 'a''b'的列,但是只要您一致,您就可以将它们调用。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('SDISKSTATS_timeMassDisk.csv', delimiter=',', header=None, names=['a', 'b'])
plt.plot(df['a'], df['b'], label='csv')
plt.xlabel('x')
plt.ylabel('y')
plt.title('pls let this work')
plt.legend()
plt.show()

相关内容

最新更新