python基础学习(一),操作Excel文件,处理数据

基础认知(办公自动化场景)
目标:熟悉变量、条件、循环、函数,摆脱“手工作业”。

场景:公司HR需要从一份混乱的Excel考勤表中,自动筛选出迟到超过3次的员工名单。

具体例子:读取CSV文件,遍历行,统计迟到次数,输出预警名单。

练习:写一个函数 count_late(records),输入列表,返回字典。

 

基本涉及模块:

1)使用import 进行插件引用(如果是内置插件,可以直接引用;如果是三方插件,则需要pip install 安装后,再进行引用;)

2)定义子函数,根据业务功能需求,定义具体的实现子函数;比如当前项目,可以单独定义一个获取csv文件的函数

3)主函数main();整个py文件的执行主体;定义整个业务流程;

4)定义py文件的标准入口:

if __name__ == "__main__":
main()

5)终端中,使用python late_warning.py  , 即可实现需要的业务功能;

 

以下是具体代码,可以直接使用;

具体实现代码:late_warning.py

 1 import csv  #引用插件
 2 
 3 def em_latecount(myrecords):
 4     """ 统计员工列表中,每个员工的迟到次数
 5     参数:myrecords 属于一个列表数组,每个元素是一个JSON对象,包含姓名和是否迟到信息
 6     
 7     返回数据:JSON数组,里面有姓名和迟到次数
 8     """
 9     latecount = {}
10     for record in myrecords:
11         name = record["员工姓名"]
12         is_late = record["是否迟到"]
13         if is_late == "":
14             if name in latecount:
15                 latecount[name] +=1
16             else:
17                 latecount[name] = 1
18 
19     return latecount
20 
21 def read_csv(file):
22     """ 读取Excel文件,获取员工迟到记录数据表格
23 
24     参数:csv文件的路径
25     
26     返回:作为一个list,返回;
27     """
28     records = []
29     with open(file,"r",encoding="utf-8") as ff:
30         reader = csv.DictReader(ff)
31         for row in reader:
32             records.append(row)
33     return records
34 
35 def search_warning_list(latecount,threshold=4):
36     """查找列表中,迟到次数超过4次的员工
37     参数:需要查找的对象列表,及设置的迟到次数的阈值
38     返回:迟到4次以上的员工列表
39     """
40 
41     warning_record = []
42     for name, count in latecount.items():
43         if count > threshold:
44             warning_record.append({"name":name,"count":count})
45     return warning_record
46 
47 def main():
48     import os 
49     filepath= os.path.dirname(os.path.abspath(__file__))
50     print(f"获取csv数据路径:{filepath}")
51     csvpath = os.path.join(filepath,"attendance.csv")
52     
53     print(f"获取csv数据:{csvpath}")
54     records = read_csv(csvpath)
55     print(f"获取了{len(records)}条记录\n")
56 
57     print("开始统计员工的迟到次数")
58     late_count = em_latecount(records)
59     
60     print("打印员工迟到次数记录")
61     for name,count in late_count.items():
62         print(f"name:{name}, count:{count}")
63 
64     print("获取达到阈值的员工")
65     warning_record = search_warning_list(late_count,4)
66 
67     print("打印警告列表")
68     if warning_record:
69         for aa in warning_record:
70             print(f"name:{aa['name']},count:{aa['count']}")
71     else:
72         print("所有员工都未超出4次")
73
74 if __name__ == "__main__":
75     main()

 测试使用附件:https://files.cnblogs.com/files/violetlength/attendance.zip?t=1787886060&download=true

posted @ 2026-08-28 10:42  Purplerr  阅读(1)  评论(0)    收藏  举报