版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
任務27
操作文件(一)
CSV文件操作程序設計基礎(Python語言)CONTENTS目錄01任務背景與目標02深入認識CSV文件、基于字典接口操作CSV文件03基于字典接口備份文件案例04任務測試與總結任務背景與目標01一、任務背景
文本文件可存儲機器人的提示語信息,日志文件則更適于存為CSV、Excel等表格型文件。
本任務大家會在完成校園機器人的運行日志、任務記錄等文件的打開、輸出和數(shù)據(jù)的簡單處理中,掌握CSV文件的操作方法。二、任務目標理解CSV文件的數(shù)據(jù)存儲格式;理解CSV對數(shù)據(jù)記錄的表達;1.CSV文件的存儲原理掌握用csv.DictReader、csv.DictWriter等對象實現(xiàn)CSV文件讀寫的方法;2.掌握基于字典接口讀寫CSV認識CSV及字典接口02一、CSV文件存儲數(shù)據(jù)1.CSV:存儲用逗號分隔的數(shù)據(jù)的文本文件。CSV文件常用于電子表格和數(shù)據(jù)庫數(shù)據(jù)的導入和導出,
可以用記事本程序、WPS表格或EXCEL等打開。2.CSV文件結構直觀,節(jié)省存儲空間,很適合數(shù)據(jù)交換和存儲。圖6-9
用記事本查看robots_info.csv二、CSV文件的讀寫方法
2.基于字典接口讀寫CSV文件:
(1)讀操作
這種方法通過字段名(fieldnames)的定義將每行為一條數(shù)據(jù)記錄映射成字典,進而可通過字段名訪問字典中特定的數(shù)據(jù)項,作字典操作。讀CSV文件可用csv.DictReader接口,其fieldnames參數(shù)若省略則用文件首行數(shù)據(jù)充當。importcsvfieldnames=['機器人ID','名稱','型號','制造商','購買日期','保修期(月)','狀態(tài)']withopen('robots_info.csv','r',newline='',encoding='utf-8')ascsvfile:#打開文件reader=csv.DictReader(csvfile,fieldnames)#指定fieldnames,建reader接口print(reader.fieldnames)#顯示reader對象采用的字段名字典forrowinreader:#print(row)#row是一個字典,鍵是列名,值是對應的數(shù)據(jù)print(row['機器人ID']+','+row['名稱']+','+row['狀態(tài)'])print(reader.line_num)#顯示reader數(shù)據(jù)處理到哪一行程序示例說明csv.DictReader的數(shù)據(jù)迭代每次處理一行,數(shù)據(jù)均為字典,可選取字段處理,提升數(shù)據(jù)的可讀性。csv.DictReader的line_num為已讀入的行數(shù),可反饋數(shù)據(jù)讀取的進度。圖6-12運行結果二、CSV文件的讀寫方法
2.基于字典接口讀寫CSV文件:
(1)寫操作importcsvfields=['機器人ID','名稱','型號','制造商','購買日期','保修期(月)','狀態(tài)']nRbt1={'機器人ID':'R005','名稱':'小@','型號':'Model-D','制造商':'XYZRobotics','購買日期':'2024-08-16','保修期(月)':'24','狀態(tài)':'在役'}withopen('robots_info.csv','a',newline='',encoding='utf-8')ascsvfile:#打開文件writer=csv.DictWriter(csvfile,fields)#創(chuàng)建文件寫接口writer.writeheader()#將fields列表寫到CSV文件首行writer.writerow(nRbt1)#字典中的數(shù)據(jù)為一條記錄寫入文件程序示例圖6-13
運行結果說明csv.DictWriter接口實現(xiàn)將字典型組織的數(shù)據(jù)記錄寫入CSV文件,可指定文件的數(shù)據(jù)結構,可用writeheader()方法寫入文件頭即首行數(shù)據(jù)項名稱,可以用writerow()、writerows()將字典中保存的一條記錄或多條記錄寫入文件?;谧值浣涌趥浞菸募咐?3【案例27-2】基于字典接口備份robots_Info.csv到同目錄下的robots_InfoBak.csv。一、案例描述robots_Info.csv中存有小@表格化的信息,現(xiàn)需用csv.DictReader、csv.DictWriter打開查看并將數(shù)據(jù)備份到文件robots_InfoBak.csv中。二、操作步驟詳解1.查看原文件結構查看原數(shù)據(jù)文件的字段結構;2.讀取數(shù)據(jù)用字典接口讀出數(shù)據(jù),轉(zhuǎn)為字典型加入列表;3.建備份文件寫接口創(chuàng)建且打開備份文件,生成寫數(shù)據(jù)對象writer(備份接口);4.
備份數(shù)據(jù)到文件用writeheader()寫入列名;用writerows(records)將列表數(shù)據(jù)寫入備份文件三、代碼示例及顯示結果importcsvfieldnames=['機器人ID','名稱','型號','制造商','購買日期','保修期(月)','狀態(tài)']records=[]#建立列表,準備保存原有數(shù)據(jù)文件讀出的內(nèi)容withopen('robots_info.csv','r',newline='',encoding='utf-8')ascsvfile:#打開原有數(shù)據(jù)文件reader=csv.DictReader(csvfile,fieldnames)#創(chuàng)建文件讀對象print(reader.fieldnames)#顯示reader對象采用的字段名字典next(reader)#跳過文件中首行字段名forrowinreader:#遍歷讀出數(shù)據(jù),存入列表recordsrecords.append(row)withopen('robots_infoBakDict.csv','w',newline='',encoding='utf-8')ascsvfile:#創(chuàng)建新文件writer=csv.DictWriter(csvfile,fieldnames)#創(chuàng)建文件寫對象writer.writeheader()#寫入文件的字段名在首行writer.writerows(records)#將列表轉(zhuǎn)存的多個數(shù)據(jù)一次性寫入新文件圖6-14
程序運行結果四、案例總結:基于字典接口操作文件總結01讀時數(shù)據(jù)轉(zhuǎn)為字典csv.DictReader將數(shù)據(jù)轉(zhuǎn)為字典,可通過列名靈活訪問;02寫時構建規(guī)則結構csv.DictWriter需指定fieldnames,writeheader()確保列結構一致;03操作高效writerows()可批量寫入多行數(shù)據(jù),提升效率。任務測試與總結05一、選擇題1.以下關于CSV文件的描述,正確的是?(
)A.每一行是二維數(shù)據(jù),可用字典表示B.分隔符必須是逗號C.整個文件是二維數(shù)據(jù)D.只能存儲數(shù)字2.在Python中,csv.DictReader讀取CSV文件時,每一行數(shù)據(jù)解析為?(
)A.列表B.字典C.元組D.集合3.csv.DictWriter的fieldnames參數(shù)作用是?(
)A.指定數(shù)據(jù)行B.指定列標題C.指定編碼D.指定分隔符
二、填空題1.Python中處理CSV文件的標準庫是_________。2.讀取CSV為字典用csv.____________類,寫入字典到CSV用csv.______________類。
CBBCSVDictReaderDictWriter程序設計基礎(Python語言)任務27
操作文件(二)
JSON文件操作CONTENTS目錄01任務背景與目標02認識JSON文件和訪問JSON文件的方法03JSON文件操作案例04任務測試與總結任務背景與目標01一、任務背景JSON文件其簡潔、易讀、跨平臺等特性,在各類技術場景中被廣泛應用。
本任務通過處理校園機器人的運行日志、任務記錄等,學習JSON文件的操作方法。。
users.json文件二、任務目標掌握JSON文件特殊的數(shù)據(jù)組織形式;1.JSON存儲數(shù)據(jù)的方式掌握使用json庫中的loads()和dumps()進行JSON文件讀寫的方法;2.使用json標準庫讀寫JSON文件的方法認識JSON文件和基于
JSON庫訪問JSON文件02一、認識JSON文件1.JSON是存儲JavaScript對象格式數(shù)據(jù)的文本文件,采用多層字典結構組織數(shù)據(jù),層次清晰、易讀易寫;2.JSON是輕量級數(shù)據(jù)交換格式,被大部分編程語言和數(shù)據(jù)處理工具支持,適合非結構化或半結構化數(shù)據(jù)的存儲與交換。robots_data.json的數(shù)據(jù)二、JSON文件操作JSON文件處理通過標準的json庫提供的方法,按照讀取文件、修改數(shù)據(jù)、保存修改和驗證新數(shù)據(jù)符合JSON格式等四步實施。1.
讀取JSON文件importjson#導入標準庫jsonfile_path='robotBasicInfo.json'try:#用try...except語句執(zhí)行JSON文件訪問withopen(file_path,'r',encoding='utf-8')asfile:data=json.load(file)#讀取文件中的數(shù)據(jù),格式不對則讀取失敗print(f"JSON文件格式正確,數(shù)據(jù)已經(jīng)取出!")exceptjson.JSONDecodeError:print(f"文件格式錯,讀取失??!")forkey,valueindata.items():#按字典方式遍歷讀出的數(shù)據(jù)
print(f"{key}--{value}")
程序示例說明用json.loads()方法讀取JSON文件時,將文件中的數(shù)據(jù)轉(zhuǎn)換為字典存入字典對象;遍歷字典對象,即查看各項數(shù)據(jù)的鍵和值。二、JSON文件操作
2.
向JSON文件寫入數(shù)據(jù)
用json.dump()方法可將一個Python對象編碼成JSON格式的字符串寫入JSON文件,但注意寫入后要進行JSON數(shù)據(jù)的格式驗證importjson#導入標準庫json#準備字典封裝的層次型鍵值數(shù)據(jù)dataNew={'id':'004','name':'小綠','status':'配送中','location':'一樓大廳','battery':90,'task':{'taskID':'T012','destination':'圖書區(qū)9號桌位','cargo':'面包'}}file_path='robotBasicInfo.json'withopen(file_path,'w',encoding='utf-8')asfile:#以寫的方式打開文件json.dump(dataNew,file,ensure_ascii=False,indent=4)#indent:每層縮進字符數(shù),ensure_ascii=False確保非ASCII字符(如中文)能正確顯示
程序示例JSON文件操作案例03【案例27-4】調(diào)整校園服務機器人數(shù)據(jù)文件中的設備配置和完成任務數(shù)一、案例描述
打開robots_data.json文件、讀出數(shù)據(jù)后,在每個機器人的“配置”項中添加“Comblock”項(值為“5G”)、將“完成任務數(shù)”項值加1,修改后的數(shù)據(jù)存入robots_dataModi.json文件。圖6-16查看robots_data.json的數(shù)據(jù)二、操作步驟詳解1.導入JSON庫導入json庫支持JSON文件操作,2.定義函數(shù)封裝文件操作定義函數(shù),封裝JSON文件的讀與寫,封裝中間字典型數(shù)據(jù)的處理。3.主程序調(diào)用函數(shù)調(diào)用封裝讀、改、寫入JSON文件的函數(shù),完成文件操作。三、代碼示例及顯示結果importjsonimportpandasaspdnwPz={"ComBlock":"5G"}defread_json(file_path):withopen(file_path,'r',encoding='utf-8')asfile:data=json.load(file)returndatadefmodify_data(data):forrbtindata['robots']:print(f"原id:{rbt['id']},配置:{rbt['配置']},完成任務數(shù):{rbt['完成任務數(shù)']}")rbt['配置']["ComBlock"]="5G"#修改數(shù)據(jù)rbt['完成任務數(shù)']=str(int(rbt['完成任務數(shù)'])+1)print(f"修改后的id:{rbt['id']},配置:{rbt['配置']},完成任務數(shù):{rbt['完成任務數(shù)']}")returndatadefwrite_JSON(file_path,data):withopen(file_path,'w',encoding='utf-8')asfile:json.dump(data,file,ensure_ascii=False,indent=4)#主程序data=read_json('robots_data.json')?modified_data=modify_data(data)rbt_df=convert_to_df(modified_data)print(rbt_df)write_JSON("robots_dataModi.json",modified_data)圖6-17
程序運行結果四、案例總結:JSON文件操作案例01JSON層次化的數(shù)據(jù)組織
JSON的嵌套字典結構適合存儲層次化數(shù)據(jù),通過鍵名可直接訪問和修改深層數(shù)據(jù)(如rbt['配置']['ComBlock']);02JSON文件的優(yōu)勢
JSON組織數(shù)據(jù)的方式在處理非結構化或半結構化數(shù)據(jù)時具有顯著優(yōu)勢,特別適用于大數(shù)據(jù)和實時數(shù)據(jù)處理的應用場景任務測試與總結05
一、填空題1.要將JSON格式的字符串解碼為Python對象,可以使用________________函數(shù)。2.使用________________函數(shù)可以將Python對象(如字典或列表)編碼為JSON格式的字符串。3.使用json.load()函數(shù)時,需要傳入一個已打開的________對象作為參數(shù),該函數(shù)會返回解析后的Python對象(如字典或列表)。4.要將Python對象寫入到JSON文件中,可用json庫的________________函數(shù)。json.loads()json.dumps()文件json.dumps()THEEND謝謝程序設計基礎(Python語言)任務27
操作文件(三)
Excel文件操作CONTENTS目錄01任務背景與目標02Excel數(shù)據(jù)存儲方式與操作方法03Excel數(shù)據(jù)清洗與分析案例04任務測試與總結任務背景與目標01一、任務背景
在應用軟件開發(fā)中,Excel文件因其靈活的數(shù)據(jù)處理能力和廣泛的用戶基礎,被廣泛集成和應用。
本任務通過機器人小@的工作記錄數(shù)據(jù)的處理,學習EXCEL文件的操作方法。二、任務目標掌握Excel文件的存儲原理;1.Excel文件存儲原理掌握基于Python的Excel文件讀寫操作方法;2.讀寫操作方法;學會使用pandas庫對Excel數(shù)據(jù)進行簡單處理。3.學會數(shù)據(jù)處理Excel數(shù)據(jù)存儲方式02一、認識EXCEL文件1.EXCEL工作簿文件:電子表格文件,擴展名(.xls、.xlsx),處理(WPS表格、Excel)。2.EXCEL文件包含張表(sheet),支持公式、圖表、數(shù)據(jù)透視表等高級功能,適合復雜的數(shù)據(jù)分析和展示。圖6-19
EXCEL文件示例3.Excel文件操作:pandas庫----文件操作簡便,openpyxl----專門處理,xlrd、pyexcel----能夠處理。二、操作Excel文件1.
讀文件
作用:利用read_excel()方法讀取Excel文件,返回DataFrame對象;
主要參數(shù):file:文件路徑或?qū)ο螅ū靥睿?;sheet_name:指定工作表名稱或索引(默認0);header:作為列名的行號(默認0,即第一行)names:列名列表,用于覆蓋從文件中讀取的列名,可省略;pandas.read_excel(file,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)engine:解析Excel文件的引擎,可是'xlrd'、'openpyxl'或'odf'。默認為None,Pandas將嘗試使用最合適的引擎。skiprows:要忽略的行數(shù)或需要跳過的行號列表(從0開始計數(shù))。nrows:需要讀取的行數(shù)。usecols:要返回的列的集合(列名的列表、列范圍描述、列名篩選條件)。
格式:二、操作Excel文件1.
讀文件
importpandasaspdfile_path='robotWorkData.xlsx'#讀取指定工作表到DataFramedf=pd.read_excel(file_path,sheet_name='Records')print(df.head(2))#顯示前2行數(shù)據(jù)
程序示例圖6-20
用Pandas讀取EXCEL文件工作表結果二、操作Excel文件2.
寫文件
作用:用DataFrame對象的to_excel()方法可將其寫入EXCEL
主要參數(shù):file:文件的路徑或文件對象。sheet_name:默認為'Sheet1',指定要寫入的工作表名稱。header:默認為True,表示是否寫入列名。DataFrame.to_excel(file,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None,storage_options=None)startrow和startcol:分別默認為0,表示開始寫入的行號和列號columns:要寫入的列的名稱。默認為None,即寫入所有列。index:默認為True,表示是否寫入行索引(行號)。格式:二、操作Excel文件2.
寫文件
importpandasaspddata={#創(chuàng)建機器人運行數(shù)據(jù)'日期':['2025/1/20','2025/1/20','2025/1/20','2025/1/20','2025/1/20'],'時間':['8:00:00','8:10:00','8:15:00','8:30:00','9:00:00'],'機器人ID':['R001','R002','R001','R003','R002'],'任務類型':['送餐','送物','送餐','送物','送餐'],'起始位置':['廚房','一樓大廳','廚房','倉庫','廚房'],
'目的地':['302房間','二樓會議室','305房間','實驗室','201房間'],'任務狀態(tài)':['已完成','進行中','已完成','已完成','已完成'],'耗時(分鐘)':[5,-1,6,4,7]}df=pd.DataFrame(data)#使用數(shù)據(jù)字典創(chuàng)建DataFrameprint("生成的DataFrame:");print(df)#顯示生成的DataFrameexcel_file_path='robot_data.xlsx'df.to_excel(excel_file_path,index=False,engine='openpyxl')#將DataFrame寫入Excel文件print(f"\nDataFrame已成功寫入Excel文件:{excel_file_path}")
程序示例圖6-21
用Pandas向EXCEL文件寫數(shù)據(jù)結果Excel數(shù)據(jù)清洗與分析案例03【案例27-4】
對robot_data.xlsx中的機器人工作數(shù)據(jù)進行清洗和分析、轉(zhuǎn)存。一、案例描述
用read_excel()打開文件、讀出數(shù)據(jù)到DataFrame中,用其豐富的方法完成數(shù)據(jù)清洗、分析和統(tǒng)計,再將處理后的數(shù)據(jù)用df.to_excel()做另存處理。圖6-22
案例27-4程序運行結果分步展示二、操作步驟詳解1.讀取EXCEL用pd.read_excel()打開文件、讀數(shù)據(jù)到DataFrame并顯示;2.數(shù)據(jù)清洗用dropna()刪除含缺失值的行,drop_duplicates()刪除重復行;3.數(shù)據(jù)分析df.shape查看數(shù)據(jù)形狀,df.describe()生成描述性統(tǒng)計指標;4.
數(shù)據(jù)統(tǒng)計用df['耗時(分鐘)'].sum()計算總耗時,groupby('任務類型')['耗時(分鐘)'].sum()計算各類任務總耗時;4.
向EXCEL寫入數(shù)據(jù)用df.to_excel()將清洗后的數(shù)據(jù)存入新文件。三、代碼示例及顯示結果importpandasaspdfile_path='robot_data.xlsx'df=pd.read_excel(file_path,sheet_name='Sheet1')#讀取Excel文件print("OriginalData:")#顯示前五行數(shù)據(jù)print(df.head())#數(shù)據(jù)清洗并顯示df_cleaned=df.dropna()#刪除包含缺失值的行df_cleaned=df_cleaned.drop_duplicates()#刪除重復的行print("\nCleanedDataShape:")#顯示清洗后的數(shù)據(jù)形狀print(df_c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國互聯(lián)網(wǎng)醫(yī)院分級診療體系遠程醫(yī)療市場發(fā)展分析報告
- 2025-2030中國互聯(lián)網(wǎng)醫(yī)療平臺合規(guī)運營監(jiān)管政策分析研究發(fā)展規(guī)劃報告
- 機械暗渠施工方案(3篇)
- 代辦幫辦協(xié)議書
- 信道劃分協(xié)議書
- 元旦魔方活動策劃方案(3篇)
- 團隊聚餐活動策劃方案(3篇)
- 餐廳瓷磚施工方案(3篇)
- 小春的營銷方案(3篇)
- 彩車裝飾施工方案(3篇)
- 2025下半年貴州遵義市市直事業(yè)單位選調(diào)56人參考筆試題庫附答案解析
- 【試卷】吉林省松原市2025-2026學年八年級上學期12月期末測試道德與法治試題
- 車子棚出租協(xié)議書
- 云南民族大學附屬高級中學2026屆高三聯(lián)考卷(四)語文+答案
- 期末綜合測試卷一(試卷)2025-2026學年二年級語文上冊(統(tǒng)編版)
- 2025山東青島上合控股發(fā)展集團有限公司社會招聘31人參考筆試試題及答案解析
- 2025年大學康復治療學(運動療法學)試題及答案
- 胎膜早破的診斷與處理指南
- 2024年廣東省春季高考(學考)語文真題(試題+解析)
- 2025年紀檢監(jiān)察知識試題庫(含答案)
- 陜西省專業(yè)技術人員繼續(xù)教育2025公需課《黨的二十屆三中全會精神解讀與高質(zhì)量發(fā)展》20學時題庫及答案
評論
0/150
提交評論