[英]Basic CSV x-y Plotting with Python
尝试编写一个读取csv文件并打印xy图的python脚本。 我有一个csv文件,其中包含几行和几列数据。 我想为第一列和第二列绘制一个xy图。 这是我到目前为止所得到的...
import csv
def getColumn(filename, column):
results = csv.reader(open(filename), delimiter="\t")
return [result[column] for result in results]
x = getColumn("TableOne.csv",0)
y = getColumn("TableOne.csv",1)
plt.figure("X-Y Plot")
plt.xlabel("Site")
plt.ylabel("Average")
plt.plot(x,y)
...但是它是按行而不是按列读取我的csv文件,它输出一堆混合数据而不是我想要的一个特定数据。 有什么建议么?
查看zip
功能以及有关zip splat的一些答案。
您可以轻松地做到这一点:
In [1]: data = [['x1', 'y1'], ['x2', 'y2'], ['x3', 'y3']]
In [2]: zip(*data)
Out[2]: [('x1', 'x2', 'x3'), ('y1', 'y2', 'y3')]
在此, *data
解包data
成3只列出[x, y]
对。 然后,通过将每个列表的第一个元素归为一组,将每个列表的第二个元素归为另一组,将它们zip
在一起。 由于每个列表只有2个元素,因此zip(*data)
返回两个组,分别是x和y元素。
就你而言,改变
def getColumns(filename):
results = csv.reader(open(filename), delimiter="\t")
return zip(*list(results)) # may not need the list() but just in case
x, y = getColumns("TableOne.csv")
plt.figure("X-Y Plot")
plt.xlabel("Site")
plt.ylabel("Average")
plt.plot(x,y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.