我正在读取具有两列的CSV文件。第二列描述标签。我想查看CSV文件中每个标签有多少个。

我的解决方案涉及一个简单的for循环和一个dictionary对象:

dataset = np.genfromtxt(input_file, invalid_raise=False, missing_values='N/A', delimiter=",", dtype=str,
                            skip_header=1)
    np.load

    X = dataset[:, 0]
    y = dataset[:, 1]
    classes = dict()
    for label in y:
        if label in classes:
            classes[label] += 1
        else:
            classes[label] = 1

    print classes


例:

{'Error Processing Payment': 1, 'General Question': 1, 'Display': 5, 'Software': 2}


我想知道是否有像NumPy这样的groupby函数,它将为我提供相同的功能吗?

最佳答案

您可以通过将数据集转换为结构化数组来使用numpy的花式索引:

dataset = np.genfromtxt(input_file, invalid_raise=False, missing_values='N/A', delimiter=",", dtype=[('data', 'S50'), ('label', 'S50')],
                        skip_header=1)


然后您获得'Error Processing Payment'的频率很简单:

len(dataset[dataset['label'] == 'Error Processing Payment'])


此外,您还可以使用以下方法获得所有可用的标签:

set(dataset['label'])

关于python - Numpy CSV文件groupby,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38154677/

10-12 23:53