遍历列以绘制输出数据图

时间:2018-08-08 00:49:50

标签: python python-2.7 numpy matplotlib

我写了一个小的python脚本来绘制我的数据图。我想修改y变量,这样我每次输入更改时都不必更改usecols = range(1,11)参数。是否可以在np.gefromtxt函数中定义一个for循环?

import numpy as np
import matplotlib.pyplot as plt   
x = np.genfromtxt('classdist.csv', usecols=(0)) 
y = np.genfromtxt('classdist.csv', usecols=range(1,11))
y1 = y * 100
print ' x=', x, '\n\n y=', y1
plt.plot(x, y1, linewidth =2)
plt.show() 

2 个答案:

答案 0 :(得分:0)

您通常不会两次致电genfromtxt。而是从退货中选择您需要的东西。

A = np.genfromtxt(..)
x = A[:,0]
y = A[:,1:]

答案 1 :(得分:0)

就像先前的答案一样,最好的做法是先读取整个csv,然后将第一列切片为x,将其余列切片为y。这样,只要csv中的第一列是x,脚本就可以工作。

有关更细微的解决方案,您可以研究熊猫,因为它支持命名列。这是一个使用熊猫的非常简单的解决方案。您可以使用它做更多的事情,并且它还有更好的方法来处理表格数据。

import pandas as pd
import matplotlib.pyplot as plt 
df = pd.read_csv("/path/filename.csv") #Read in the entire csv as a Dataframe object
x = df.iloc[:,0]   #select the first column to be x. Here, you can also mention the column name like df["your_col_name"]
y = df.iloc[:,1:]  #Select the rest to be y
y1 = y * 100
print ' x=', x, '\n\n y=', y1
plt.plot(x, y1, linewidth =2)
plt.show()