选择取决于其他列值的值

时间:2014-06-05 18:52:26

标签: python matplotlib histogram

我有一个看起来像这样的数据文件:

3       24.5
3       23.7
3       21.87
3       24.3
3       10.45
6       11.2
6       22.5
6       20.95

我想使用第二列中的数据,但只使用第一列中值为3的数据。当我只想要那些具有相应的'和它们一起的价值观。 我应该在代码中添加什么来进行区分? 这是我的代码:

filename = raw_input("Enter file name: ") + '.csv'
filepath = '/home/david/Desktop/' + filename

data = np.genfromtxt(filepath, delimiter=',',skip_header=1, dtype=float)

rownum = input("Enter row number to use: ")
line = [row[rownum] for row in data]
binw = input("Enter bin width: ")
bins=arange(int(min(line)-1), int(max(line)+1), binw)

pyplot.hist(line, bins=bins, alpha=0.5, color='g')

pyplot.show()

我使用第5行作为必须分析和绘制的数据。但是,第3行有' 3'而且' 6'我希望python为我过滤的值。

1 个答案:

答案 0 :(得分:1)

首先,您实际上不是指列而不是行吗?

使用返回numpy数组的np.genfromtxt读取数据后,可以使用numpy.where仅选择在特定列中包含特定值的行。如果第3列包含应该用于过滤的数据,那么首先执行以下操作

data = data[np.where(data[:,target_column] == target_value)]

这将选择位置target_column的值为target_value的所有行。使用您的值,代码变为

data = data[np.where(data[:,3] == 3)]

在此之后,您只需编写

即可选择包含要绘制数据的列
# I'm renaming rownum to colnum
line = data[:,colnum]

这应该是一个公平的起点。