學以致用,課堂練習:考勤目錄中存放的是所有的考勤excel表格,從第1天~第9天,表中關鍵的信息就是,學生當天看了多久的直播。
要求,利用所學知識,讀取每個excel表格,統計出來每個學生,一共看了多久的直播。x小時y分鐘,不考慮秒。
1、模塊化開發;2、先不考慮特別細節的地方。
思路:1.要統計觀看總時長,我需要將每個學生的觀看信息提取出來;2.要使用字典dist+list的形式,存儲每個學生的觀看信息。
圍繞以上目的,讀取所有文件內容,提取需要的信息。
依次讀取每個文件,找“xxx”在哪一行,將該行的第二列數據,取出(統一格式后再運算)即可。對每位學生都重復以上操作,即可。
'''
學以致用,課堂練習:考勤目錄中存放的是所有的考勤excel表格,從第1天~第9天,表中關鍵的信息就是,學生當天看了多久的直播。
要求,利用所學知識,讀取每個excel表格,統計出來每個學生,一共看了多久的直播。x小時y分鐘,不考慮秒。
'''
import pandas as pd
import osrename = {'aaa': '山水', 'bbb': 'Lee', 'ccc': '琨'}; # 昵稱
# 直接拷貝所有的學生姓名
names = ['aaa', 'bbb', 'ccc'];
# print(len(names)) # 73名學生# 列車所有文件
root = r'C:\Users\lwx\Desktop\考勤';
fs = os.listdir(root);
# 得到絕對路徑
fs = [os.path.join(root, x) for x in fs];
# print(fs)infos = {}; # 存儲每個學生的觀看信息,結構為'張三':['3小時24分' ,'2小時13分', ...]# 依次讀取文件
for f in fs:df = pd.read_excel(f); # 得到dataframe# 獲取第一列的數據 ,主要就是人名col_names = list(df.iloc[:, 0]); # 外部要套list# 遍歷學生,找到每個學生出現在第幾行;根據行號,對應的第二列就是觀看信息for name in names:# 判斷名字,也判斷昵稱if name in col_names or (name in rename and rename[name] in col_names):if name in col_names:index = col_names.index(name); # 按名字找索引else:index = col_names.index(rename[name]) # 按照昵稱找索引time = df.iloc[index, 1]; # 得到觀看時長# 放入dict中if name in infos:infos[name].append(time);else:infos[name] = [time];# print(infos); # OK,得到數據
# print(infos['aaa'])# 統計列表總時長(分鐘)
def getTotalTime(ts):tt = [];for t in ts:if '時' in t or '分' in t or ':' in t:t = t.replace('小', '').replace('鐘', ''); # 將多余的描述去掉# 將冒號替換為"時"和"分"t = t.replace(":", '時', 1).replace(":", '分', 1);tt.append(t);# print(tt)# 繼續對tt處理hs = 0; # 總小時數ms = 0; # 總分鐘數for t in tt:# 先找小時 '1時37分'h = 0;if '時' in t:h = t[:t.index('時')]; # '1't = t[t.index('時') + 1:]; # '37分'm = 0;if '分' in t:m = t[:t.index('分')]; # '37'hs = hs + int(h);ms = ms + int(m);return hs * 60 + ms;# print(getTotalTime(infos['aaa']));
tj = {};
for name, ts in infos.items(): # 字典遍歷tj[name] = getTotalTime(ts);
print(tj)# 排序
ls = list(tj.items());
ls.sort(key=lambda x: x[1], reverse=True)
print(ls)
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Python实训day10pm【os模块-处理Excel统计学生观看直播时长】的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。