打印数据集中每行和每列中文本的每个出现次数

时间:2015-09-11 02:05:22

标签: python excel count xlrd find-occurrences

我有以下图片: 请查看它以供参考。

http://i58.tinypic.com/33219hh.png

我想要的是让代码读取每个值 在每一栏中,告诉我多少次" number"和 "信"列中有。换句话说,是什么 发生那个"数字"和#34;字母"在各自的专栏中?

这是我的代码:

import xlrd,xlwt

ws = 'C://Users/Jack/Desktop

extract=[]
wb1 = xlrd.open_workbook(ws + 'try.xlsx')
sh1 = wb1.sheet_by_index(0)

for a in range(0,sh1.nrows):
    for b in range(0,sh1.ncols):
        extract.append(sh1.cell(a,b).value)
#print(extract)
print()
print('4:',extract.count('4'))

输出为4: 0

我只想从第一列算出数字4 因为我不知道如何统计每一件事 立刻。输出应该是4: 3。 但是,我想知道如何一如既往地阅读所有内容 早些时候。

2 个答案:

答案 0 :(得分:0)

您可以查看pandas。解决方案可以是这样的:

import pandas as pd
df = pd.io.excel.read_excel(your_file_name)
print df.icol(0).value_counts()

答案 1 :(得分:0)

将每列送到collections.Counter

import collections, xlrd
import xlrd
wb = xlrd.open_workbook('test.xls')
sh = wb.sheet_by_index(0)
columns = []
for i in xrange(sh.ncols):
    columns.append(collections.Counter(sh.col_values(i)))

format_str = 'column {}: {}'
for n, column in enumerate(columns):
    print(format_str.format(n, column))
>>> 
column 0: Counter({u'a': 3, u'b': 2, u'c': 1, u'd': 1})
column 1: Counter({u'c': 2, u'b': 2, u'd': 2, u'a': 1})
column 2: Counter({u'c': 4, u'a': 1, u'b': 1, u'd': 1})
>>>