日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python助教_助教工作:关于如何使用python+excel快捷生成千帆竞发图

發布時間:2023/12/16 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python助教_助教工作:关于如何使用python+excel快捷生成千帆竞发图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么需要這樣的功能

生成千帆競發圖需要數次作業成績列在一張總成績表中,通過人工的方式將復數張表合并為一張效率實在底下。

而合并的操作本身卻是規律性極強、重復性極強的,這通常意味著:我們可以利用程序來代替人工,從而提高效率,讓我們把時間放到做更有意義的事情上去。

所以為了提高助教工作的效率,決定制作這樣的一個python程序來快速生成總成績表,然后使用excel自帶的圖標功能來生產千帆競發圖。

碼云地址

準備

python 3.5+

excel 2010 及以上

博客園班級導出作業excel功能

安裝

需要安裝python的第三方庫xlrd,xlwt

使用pip安裝即可,指令如下

pip install xlrd

pip install xlwt

數據處理思路

在博客園可以通過作業的導出excel功能快速獲取某次作業的成績。

以下是由博客園導出的某次作業的成績

我們發現:在導出的數據中,學號是具有唯一性的,通過按學號提取多次作業的成績,可以形成學號-歷次成績列表的映射,形如

'201879123761xxx':[9,8,...,14]

而且通過學號歸納成績,可以避免粗暴的提取列造成的一些錯誤。

代碼及方法

首先引入所需的庫,以及聲明的全局變量Data

import xlrd,sys,os,xlwt

Data = {}

然后設置讀取函數,引入全局變量Data,讀取過程中將學號作為字典的key,而字典的value則是list類型的數據,將各個表同樣位置上的成績依次錄入到對應的list中

def dataReader(sheet):

global Data

for i in range(1,sheet.nrows):

try:

Data[sheet.row_values(i)[0]].append(sheet.row_values(i)[5])

except:

Data[sheet.row_values(i)[0]] = [ sheet.row_values(i)[5] ]

設置寫入函數,處理全局變量Data中的數據,將其寫入到另一個excel表中

def dataWriter():

global Data

workbook = xlwt.Workbook(encoding = 'utf-8')

worksheet = workbook.add_sheet('Final')

worksheet.col(0).width = 4000

worksheet.write(1,0, label = '學號')

row = 2

for k in Data.keys():

worksheet.write(row,0, label = k)

for i in range( len(Data[k]) ):

worksheet.write(row,i+1, label = Data[k][i])

row += 1

workbook.save('final.xls')

至此,程序的靜態部分完成。

為了方便起見,程序從命令行啟動時可以接收不定長的參數,這些參數就是各次成績數據表的文件名。需要使用sys.argv來訪問命令行啟動時程序接受的參數

books = []

for i in range(1, len(sys.argv) ):

print("正在加載: {}".format(sys.argv[i]))

books.append(sys.argv[i])

print("\n")

調用讀取函數來依次處理表中的數據

for i in books:

print("正在處理: {}".format(i))

book = xlrd.open_workbook(i)

sheet = book.sheets()[0]

dataReader(sheet)

print("{} 處理完成!\n".format(i))

最后調用寫入函數來保存結果

print("正在鏈接并生成表格")

dataWriter()

print("完成!\n")

print("按回車結束...")

input()

在制作完這個簡單的程序之后,需要我們去啟動它。使用方法很簡單,命令行啟動,命令行參數為各次作業的excel文件。在這需要提醒,請務必將導出的excel文件更名為由數字或英文組成的文件名。對于歷次作業,我們需要按照時間順序輸入參數

現在,已經獲得了一個由數次作業合并的總體成績表了。下一步則是生成千帆競發圖

生成千帆競發圖

對于生成出的總體成績表,仍然需要一些處理。首先是將所有的成績為NULL的分數,替換為0分

ctrl+F 調出查找界面,選擇替換。查找內容為NULL,替換內容為0,選擇全部替換

完成替換后,需要執行excel函數來生成數據。在原始數據不遠處選擇空閑列,輸入excel函數,例如

輸入完excel函數后,鼠標放到該單元格右下角,待鼠標變為黑色實心十字后,垂直向下拖拽至最后一個數據,例如

至此你完成了一列數據的生成。然后進行第二列數據的生成,輸入excel函數,例如

執行與上一次相同的拖拽操作,例如

你已經生成兩列數據了。在此過程中你可以發現規律,假若第一列函數是=B3,則第二列是=B3+C3,若需要第三列則是=B3+C3+D3等等,以此類推。

下面我們需要生成千帆競發圖。在你生成的數據頭部加上次數,然后選取所有你生成的數據,例如

然后選擇插入-折線圖-帶數據的折線圖,例如

你生成的數據可能如下圖所示,并非你所想要的樣式,需要調整

選擇設計-數據-切換行/列

此時生成千帆競發圖了

總結

以上是生活随笔為你收集整理的python助教_助教工作:关于如何使用python+excel快捷生成千帆竞发图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。