python - 根据其他列值选择值

标签 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 的数据。当我只想要那些旁边有相应的“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 行包含我希望 python 为我过滤的“3”和“6”值。

最佳答案

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

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

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

这将选择 target_column 位置值为 target_value 的所有行。根据您的值(value)观,代码将变为

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

此后,您可以通过简单的写入来选择包含要绘制的数据的列

# I'm renaming rownum to colnum
line = data[:,colnum]

这应该提供一个公平的起点。

关于python - 根据其他列值选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068010/

相关文章:

python - 为什么 for 循环中的 del list[0] 只删除列表的一半?

python - 即使设置了种子,LogisticRegressionCV 也会给出不同的答案

python - 如何在 keras python 中构建一维卷积神经网络?

python - 在python中使用模式匹配,从.lua文件中提取表

python - 如何在Python中生成网格并绘制3D曲面?

python - matplotlib - 用重叠的 x/y 刻度在同一轴上绘制两个直方图

python - 有没有办法使用 'matplotlib' 生成 Retina 图?

python - matplotlib 中的 Widget 可以自动定位吗?

Python:matplotlib - 概率质量函数作为直方图

c# - 如何创建直方图