根据上课情况(Excel表)进行如下操作:
1、统计上课人数
2、列出回答问题前三的学生的姓名学号
3、检测学号是否正常,将不正常学号写入新的excel表中
表如图:
import pandas as pd
import xlsxwriter
df = pd.read_excel('F:\上课情况.xlsx')#导入excel
#统计上课人数
上课=df['是否上课']
a=0
b=0
for n in range(0,7):
if 上课[n]=='是':
a=a+1
else:
b=b+1 #根据单元格内容判断
print("上课人数:",a)
print("缺课人数:",b)
#列出签到排名前三的同学姓名学号
姓名=df["姓名"]
学号=df["学号"]
回答=df["回答问题"]
回答问题=df['回答问题'].values.tolist() #转化为列表
回答问题.sort(reverse=True) #从大到小排序
回答问题=回答问题[:3] #取列表前三
回答问题=list(set(回答问题)) #去重
回答问题.sort(reverse=True) #去重后排序
for n in range(0,7):
for i in range(0,len(回答问题)):
if 回答[n]==回答问题[i]:
print(姓名[n],学号[n]) #输出回答问题前三的同学
#检测学号是否正确(位数是否正确)
for n in range(0,7):
if len(str(学号[n]))!=8: #判断是否要建立excel表
workbook = xlsxwriter.Workbook('F:\学号有问题.xlsx') #创建一个名为 hello.xlsx 赋值给workbook
worksheet = workbook.add_worksheet() #创建一个默认工作簿 赋值给worksheet
worksheet.write(0,0,'姓名') #使用工作簿在 (0,1) 写入姓名
worksheet.write(0,1,'学号') #使用工作簿在 第(0,1) 写入学号
break
#将不正确学号以及相应的名字填入新的文件中
c=1
for n in range(0,7):
if len(str(学号[n]))!=8 :
worksheet.write(c,0,姓名[n])
worksheet.write(c,1,学号[n])
c=c+1
for n in range(0,7):
if len(str(学号[n]))!=8:
workbook.close()
运行结果: