用Python统计班级同学青年大学习完成情况

用Python统计班级同学青年大学习完成情况,第1张

问题描述

青年大学习的完成情况使用excel统计的,实现形式是由QQ群里的收集表功能,而我则需要根据这些收集表统计同学们某一期是否完成。
在运行程序前,需要提前准备好源文件,名字目录文件。
源文件

名字目录

运行环境

源码

# v 1.0
# file下的文件都为必须文件,且格式为excel
import os
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
# --------------------------------------
file_path = r'./info'  # 源文件的目录
name_path = r'./name_dic.xlsx'  # 需要查找同学的文件(excel格式,列向)
save_path = r'./statistic_result.xlsx'
# --------------------------------------

def qndxx_statistic(file_path, name_path, save_path) :
    # 用pandas依次打开excel文件
    file_list = os.listdir(file_path)
    file_name = []
    for file in file_list:
        file_name.append(file.split('.')[0])

    # 读取需要检查的同学列表
    name_data = pd.read_excel(name_path, 'Sheet1', index_col=None)
    name_data = name_data['姓名']

    # 创建一个csv文件,行为文件名,列为同学姓名
    df = pd.DataFrame(np.zeros((len(name_data), len(file_list))), index=name_data, columns=file_name)
    name_data = set(name_data)

    # 根据excel中读取到的信息
    for file in file_list:
        file_info = pd.read_excel(os.path.join(file_path, file))
        complete_name = file_info['你的姓名(必填)']
        complete_name = set(complete_name.tolist())
        for name in complete_name:
            if name in name_data:
                df.loc[name, file.split('.')[0]] = 1

    # 保存制作完成的表格
    df.to_excel(save_path, sheet_name='Sheet1')


if __name__ == '__main__':
    qndxx_statistic(file_path, name_path, save_path)
    

输出结果
“1”表示完成了学习,“0”表示没有完成。

拓展
  1. 当前表格中包含部分同学的姓名,从一张包含姓名和学号的大表中,将同学的学号加入。
    VLOOKUP函数
    EXCEL入门必学的VLOOKUP函数相信我你终于可以学会了 Excel880实例教学网出品

  2. RANK函数
    已知每个同学的分数,在新的一列里标注根据同学的分数123456这样排序。
    RANK(同学的分数,所有同学的分数,0升序/1降序)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/715501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存