按对/数据透视表计数

时间:2017-12-14 14:19:59

标签: python python-3.x csv

我以CSV格式获得了以下数据:

Date    Name    Color
12/11   Thomas  Blue
12/31   Andy    Black
12/21   Luise   Red
12/41   Mark    Blue
12/11   Ronda   Black
12/11   Thomas  Blue
12/21   Mark    Green
12/11   Ronda   Black
12/31   Luise   Red
12/41   Luise   Green

我想创建一个基于对的计数,从中调出一个数据透视表,如下所示。理想情况下也是CSV文件

        Blue    Black   Red Green
Thomas   2          
Andy             1      
Luise                    2    1
Mark     1                    1
Ronda            1            1

我不完全确定如何解决这个问题。也不能使用熊猫。 :(

1 个答案:

答案 0 :(得分:3)

您可以使用defaultdict int import csv, collections counts = collections.defaultdict(lambda: collections.defaultdict(int)) colors = set() with open("data.csv") as f: reader = csv.reader(f, delimiter="\t") next(reader) # skip first line for date, name, color in reader: counts[name][color] += 1 colors.add(color) 来存储颜色计数。

colors = list(colors)
print(colors)
for name in counts:
    print(name + "\t" + "\t".join(str(counts[name][color]) for color in colors))

然后,打印不同颜色的计数(或写入CSV):

['Red', 'Blue', 'Green', 'Black']
Ronda   0   0   0   2
Thomas  0   2   0   0
Andy    0   0   0   1
Luise   2   0   1   0
Mark    0   1   1   0

结果(我会给你微调):

Ext.Panel
相关问题