python使用pandas模組實現檔案讀取、字串處理、去重排序、excel生成
阿新 • • 發佈:2018-12-21
最近學習python,用python實現一個小需求,最後寫入excel使用到pandas模組:
某中學學生在500米短跑訓練比賽中的資料,體育老師把學生成績結果記錄在檔案中(studentdata.txt),記錄格式如下: 卡納瓦, 2001-11-8,2:27,2:33,2-46,2-41,2:39,2:40,2.48 含義:學生姓名,出生日期,短跑成績 體育老師把每個學生資料整理並且儲存到excel中,資料格式為學生姓名、出生日期、第一成績、第二成績、第三成績、最差成績。 其中成績資料有些不是標準的,需要統一,例如2-48、2.48改為2:48 思路: 檔案讀取、字串處理、去重排序、Excel生成
程式碼:ardoscore.py
# encoding:utf-8 import pandas as pd def datatrain(): '''######################【step-1】讀取學員成績檔案######################''' with open("studentdata.txt", "r") as f: lines = [line.strip() for line in f.readlines()] csvList = [] for scoreinfo in lines: studentInfo = scoreinfo.split(',') studentName = studentInfo[0] studentBirthday = studentInfo[1] studentScore = studentInfo[2:] scoreSet = set(studentScore) scoreList = list(scoreSet) for i in scoreList: '''######################【step-2】字串處理######################''' scoreList[scoreList.index(i)] = i.lstrip().replace('.', ':').replace('-', ':') '''######################【step-3】去重排序######################''' scoreList.sort(cmp=None, key=None, reverse=False) resultList = [] resultList.insert(0, studentName) # 學生姓名 resultList.insert(1, ' ' + studentBirthday.lstrip()) # 出生日期 resultList.insert(2, scoreList[0]) # 最好成績 resultList.insert(3, scoreList[1]) # 第二名成績 resultList.insert(4, scoreList[2]) # 第三名成績 resultList.insert(5, scoreList[-1]) # 最差成績 # 組裝寫入csv的list csvList.append(resultList) writeToCsv(csvList) '''######################【step-4】Excel生成 - 將結果輸出到studentdata.csv######################''' def writeToCsv(csvList): name = ['學生姓名', '出生日期', '第一成績', '第二成績', '第三成績', '最差成績'] # 表頭 studentcsv = pd.DataFrame(columns=name, data=csvList) print(studentcsv) studentcsv.to_csv('studentdata.csv', index=False, encoding='gbk') if __name__ == '__main__': datatrain()
執行輸出結果:
學生姓名 出生日期 第一成績 第二成績 第三成績 最差成績
0 王曉輝 1999-3-12 2:22 2:25 2:39 2:58
1 肖鳳然 2000-1-16 2:30 2:34 2:39 2:59
2 馬曉晨 2001-7-21 2:32 2:34 2:35 2:54
3 李再立 2003-5-19 2:32 2:34 2:35 2:54
4 馬雲雲 1998-2-5 2:24 2:30 2:31 2:46
5 卡納瓦 2001-11-8 2:27 2:33 2:39 2:48
結果資料寫入excel截圖: