1

在 python 代码中,我执行以下操作:

x1=[]
y1=[]
y2=[]
y3=[]
y4=[]



for line in res_file_1.readlines():
    ll=string.split(line)
    x1.append(float(ll[0]))
    y1.append(float(ll[1]))
    y2.append(float(ll[2]))
    y3.append(float(ll[3]))
    y4.append(float(ll[4]))

因此它读取文件的 4 列并将值存储在不同的“y”数组中。我想知道如何更一般地执行此操作,即,当我不知道输入文件是否包含 4、16 或 2000 列时

更新:

后来我需要用matplotlib绘制数据,所以我通常这样做:

ax.plot(x1,y1,'ks',color='red')
ax.plot(x1,y2,'ks',color='green')
ax.plot(x1,y3,'ks',color='blue')

如何绘制未定义的列数(和颜色)?

4

4 回答 4

3

如果您有这样的数据文件input.csv

x1, y1, y2, y3, y4
A, 3, 6, 7, 1
B, 4, 5, 9, 0
X, 7, 2, 8, 5
C, 4, 3, 2, 1

使用熊猫你会做这样的事情:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('input.csv', delimiter=',', index_col='x1')
df.plot(marker='s')
plt.show()

你会得到这个情节:

在此处输入图像描述

于 2012-07-04T18:05:59.207 回答
2
from itertools import izip_longest
with open(filename, 'r') as f:
    data = list(izip_longest(*[x.split() for x in f]))

这将创建一个元组列表,其中每个元组包含来自一列的值。

于 2012-07-04T15:04:58.903 回答
2

使用numpy.genfromtxt并将列读取到recarrays 中,当您想要遍历列进行绘图时,使用recarray.dtype.names检索每一列。

于 2012-07-04T15:28:53.993 回答
1

使用字典,其中键是 x,值是 y 的列表:

data = {}
for line in res_file_1.readlines():
    ll = line.split()
    data[ll[0]] = ll[1:]
于 2012-07-04T15:04:51.700 回答