python统计一个系统登录使用人数情况的数据,数据来源excel有多个表,sheet1-sheetN,每张表是每天登录显示的姓名,每张表B列都是姓名,不同的表出现的名字和顺序都有不同,需要统计所有名字在所有表中出现的次数,查了countif函数,但是总实现不了效果,请教是否能贴上用python实现的代码
我想要达到的结果
统计在所有工作表中,所有的姓名出现的次数,在一个汇总表中显示,B列显示姓名,C列显示姓名对应出现的次数
import pandas as pd
import glob
# 获取所有Excel文件
files = glob.glob("*.xlsx")
# 定义一个空的DataFrame来存储统计结果
result = pd.DataFrame(columns=["姓名", "出现次数"])
# 遍历所有Excel文件
for file in files:
# 读取当前Excel文件的所有Sheet
sheets = pd.read_excel(file, sheet_name=None)
# 遍历所有Sheet
for sheet_name, sheet_data in sheets.items():
# 统计当前Sheet中每个姓名的出现次数
counts = sheet_data["B"].value_counts()
# 将统计结果添加到结果DataFrame中
for name, count in counts.items():
if name in result.index:
result.loc[name]["出现次数"] += count
else:
result.loc[name] = [name, count]
# 将结果按照出现次数从大到小排序
result = result.sort_values(by="出现次数", ascending=False)
# 显示结果
print(result.head())