自己构造包含10个学生的语文、数学和英语成绩的excel文件,用Python程序读取该文件的数据,进行简单的统计分析,包括每门课的最高分、最低分、平均成绩、每个学生的最高分、最低分、平均成绩。

题目

自己构造包含10个学生的语文、数学和英语成绩的excel文件,用Python程序读取该文件的数据,进行简单的统计分析,包括每门课的最高分、最低分、平均成绩、每个学生的最高分、最低分、平均成绩,然后将统计信息写入excel文件中。用Python程序实现,并给出适当的注释。

题解分析

整个题目可以分为如下几部分
  一、获取并修改Excel文件中的单元格值
    (1)、每个学生的成绩——>最高分、最低分、平均分
        1、先列再行遍历Excle文件内容,获取每个学生的最高分、最低分、(总分/3)=平均分
        2、将获得的最高分、最低分、平均分加入到Excel文件中
    (2)、每科的分数——>最高分、最低分、平均分
        1、先行再列遍历Excle文件内容,获取每个学科的最高分、最低分、(总分/3)=平均分
        2、将获得的最高分、最低分、平均分加入到Excel文件中
  二、保存修改的Excel文件

代码实现

# 创建读取文件中的数据对象
wb = xlrd.open_workbook('score.xlsx')
#先用xlrd打开文件
oldx= xlrd.open_workbook('score.xlsx', formatting_info=True)
#使其转化成xlwt对象
txb = copy(oldx)
#获取已有表单
tx= txb.get_sheet(0)
#修改单元格值
tx.write(0,4,'最高分')
tx.write(0,5,'最低分')
tx.write(0,6,'平均分')

sh = wb.sheet_by_name(u'Sheet1')
# 输出整个表的数据
for rownum in range(1, sh.nrows):
    print(sh.row_values(rownum))

#填写每个学生的最高分、最低分、平均分
for i in range(1, sh.nrows):
    Sum = 0
    maxs = sh.cell_value(i,1)
    mins = sh.cell_value(i,1)
    for j in range(1, sh.ncols):
        # 获取每个学生的最高分成绩
        maxs = max(maxs,sh.cell_value(i,j))
        # 获取每个学生的最低分成绩
        mins = min(mins,sh.cell_value(i,j))
        # 获取每个学生的平均成绩
        Sum += sh.cell_value(i, j)
    # 将每个学生的最高分填入表中
    tx.write(i, j + 1, maxs)
    #将每个学生的最低分填入表中
    tx.write(i,j + 2 , mins)
    # 将每个学生的平均分填入表中
    tx.write(i, j+3 , Sum/j-2)

#获取并填写每门课最高分、最低分、平均分
tx.write(i+1,0,"最高分")
tx.write(i+2,0,"最低分")
tx.write(i+3,0,"平均分")
for j in range(1, sh.ncols):
    Sump =0
    maxs =sh.cell_value(1,j)
    mins =sh.cell_value(1,j)
    for i in range(1,sh.nrows):
        #获取最高分
        maxs = max(maxs,sh.cell_value(i,j))
        #获取最低分
        mins = min(mins,sh.cell_value(i,j))
        #获取每个学科的总分
        Sump += sh.cell_value(i,j)
    tx.write(i+1,j,maxs)
    tx.write(i+2,j,mins)
    tx.write(i+3,j,Sump/i)
    #将数据保存到临时文件scro.xlsxtext.xls文件中去
txb.save('score.xlsx'+ "test.xls")

此实现中有一个难点:在原有的xlsx文档追加内容,会修改原本文件中的内容,所以采用xlutils来在xlrd.Book和xlwt.Workbook之间建立了一个管道,从而实现对“yuan”文件的修改.
在这里插入图片描述

实现效果

在这里插入图片描述
个人理解不足,如有不足之处望大佬提出修改方案 !!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值