我有一个n列和x行数的数据文件。 如何将每一列与其他每列数据相对应?
data=[]
inFile = open('random.data','r')
for line in inFile.readlines():
line = line.split()
b = np.array([line],dtype=float)
for i in range(len(b)):
c=(b[i])
data.append(c)
inFile.close()
这将产生一个数组,我可以在其中索引每个列,如下所示:
datax = ([i[0] for i in data])
datay = ([i[1] for i in data])
dataz = ([i[2] for i in data])
dataa = ([i[3] for i in data])
然后彼此作图:
plt.plot(datax,datay,dataz,dataa,'o')
我该如何使用for循环来实现n个列的工作?
答案 0 :(得分:0)
假设上面代码中的data
是pandas df,下面的代码将起作用:
import matplotlib.pyplot as plt
df_data = data
for i in range(len(df_data.columns)):
for j in range(len(df_data.columns)):
x = df_data.iloc[:,df_data.index[i]]
y= df_data.iloc[:,df_data.index[j]]
plt.figure()
plt.plot(x[i],y[j])
要向df读取数据,以下是代码:
data = pd.read_csv('random.data', sep=" ", header=None) #sep depends on your file, it can be space, semicolon or anything.
data.columns = ["a", "b","c", ... "etc.", ...] # Put names of your column in place of a,b,c etc.
答案 1 :(得分:0)
您有n
列,我想您可以通过data[]
访问每一列。
尝试一下
# define n here
numberofplots = math.factorial(n)/(math.factorial(2)*math.factorial(n-2))
fig = plt.figure()
for i in range(n-1):
for j in range(i+1,n):
ax = fig.add_subplot(numberofplots,1, ((i+1)*j)
ax.plot(data[i], data[j])