没有重复,计算每天进入的人数

时间:2013-11-04 08:55:03

标签: python excel vba pivot-table

我正在使用如下工作表:

Date/Time      Badge       Name
10/31/2013    
8:01:02 AM     131078      YEO, Nita
8:03:17 AM     415416      PEH, Wei
10/30/2013    
8:11:02 AM     131098      LEE, Alice
8:53:17 AM     215416      EG, shi
...
  1. 我想计算一天内没有重复的人数。只是日期,而不是确切的时间。每个人都有一个独特的徽章编号。

  2. 之后,我有另一张包含所有empoyees`徽章编号的工作表。我想比较用这张纸输入的人们来排除访客,即两张床单内的人都留下来。然后计算多少。

  3. 总结一下,在一个月内,计算每个人进入的访客数量,而不是访客数量。并根据日期绘制数字。

    如何使用excel,数据透视表或VBA完成此操作?

2 个答案:

答案 0 :(得分:1)

像这样的东西

from collections import defaultdict

# collect all visitors in a dictionary where the key is the date, and
# the value is a set of badge numbers
visitorsPerDay = defaultdict(set)

# store the last read date value
currentDate = None

with open('filename') as f:
    for line in f:
        # if the line is 10 characters long, it’s a date line
        if len(line.strip()) == 10:
            # store the date value
            currentDate = line.strip()
        elif currentDate:
            # extract the badge number; if the file is tab
            # separated, even better: split by \t
            time, badge, _ = (part.strip() for part in line.split('   ', 2))

            # add the badge number to the set within the dictionary
            visitorsPerDay[currentDate].add(badge)

# now for every date, count the number of (unique) visitors
for date, visitors in visitorsPerDay.items():
    print(date, len(visitors))

答案 1 :(得分:1)

在Excel中,在最左侧添加一列,假设“日期/时间”在B1中,在A2中输入=IF(ISBLANK(C2),B2,A1)并向下复制以适应。将ColumnA和Paste Special,Values复制到顶部。过滤ColumnC(空白)并删除所选行。在A1中添加Date。现在,您的数据布局应该与@Brett建议的一样多或多。


使用查找功能向每行添加是否访问者的指示。

根据图片左侧的源数据显示构建的数据透视表将按天显示唯一徽章访问次数:

SO19764305 example

过滤以在“报告过滤器”字段中仅选择n,并且您只有员工的等效项。

对于每月数字,请使用组(在快速菜单上),按月,月份设施。

对于图表,请从行标签中删除徽章并插入合适的图表。