我正在读取具有两列的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/