繁体   English   中英

使用Python的基本CSV xy绘图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM