Python數(shù)據(jù)對(duì)象的讀寫課件_第1頁
Python數(shù)據(jù)對(duì)象的讀寫課件_第2頁
Python數(shù)據(jù)對(duì)象的讀寫課件_第3頁
Python數(shù)據(jù)對(duì)象的讀寫課件_第4頁
Python數(shù)據(jù)對(duì)象的讀寫課件_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Python對(duì)象的讀寫Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營03第1頁,共77頁。本章學(xué)習(xí)目標(biāo)了解Python常見的數(shù)據(jù)對(duì)象掌握目錄和文件的增刪改查技能了解數(shù)據(jù)對(duì)象的持久化方法以及如何加載和讀取重點(diǎn)掌握數(shù)據(jù)文件的讀寫第2頁,共77頁。3.1 目錄與文件操作獲取當(dāng)前目錄獲取目錄信息當(dāng)前目錄是Python程序執(zhí)行或工作的目錄,可使用os.getcwd()獲得目錄信息(注意:沒有參數(shù)值)。用法示例:os.getcwd()第3頁,共77頁。3.1 目錄與文件操作獲得上級(jí)目錄獲取目錄信息上級(jí)目錄是當(dāng)前工作目錄的父級(jí)目錄,可使用os.path.dirname(path_name)獲得特定路徑的上級(jí)

2、目錄。用法示例:os.path.dirname(os.getcwd()第4頁,共77頁。3.1 目錄與文件操作更改工作目錄獲取目錄信息更改工作目錄可通過os.chdir(path_name)實(shí)現(xiàn)。用法示例:os.chdir(rD:書籍python數(shù)據(jù)分析3_附件chapter4)第5頁,共77頁。3.1 目錄與文件操作創(chuàng)建目錄目錄的基本操作創(chuàng)建目錄,可使用os庫實(shí)現(xiàn)os.mkdir(single_path)(1)使用os.mkdir創(chuàng)建單層目錄。示例:第6頁,共77頁。3.1 目錄與文件操作創(chuàng)建目錄目錄的基本操作os.mkdir(single_path2) # 建立目錄os.removedir

3、s(single_path2) # 刪除單層級(jí)目錄os.removedirs(path_level_1/path_level_2) # 刪除任意層級(jí)目錄(1)使用os.rmdir刪除單層目錄。用法是:os.rmdir(single_path)。(2)使用os.removedirs刪除任意層級(jí)目錄。用法是:刪除目錄的功能與創(chuàng)建目錄相反。(3)使用shutil.rmtree刪除任意層級(jí)目錄及其文件。os.mkdir(single_path3) # 建立目錄shutil.rmtree(single_path3)# 刪除目錄第7頁,共77頁。3.1 目錄與文件操作重命名目錄目錄的基本操作重命名使用的是

4、os.rename方法,該方法可對(duì)目錄或文件進(jìn)行重命名操作。os.rename(folder,folder_rename) # 重命名為folder_rename第8頁,共77頁。3.1 目錄與文件操作復(fù)制和移動(dòng)目錄目錄的基本操作復(fù)制和移動(dòng)目錄可通過shutil庫實(shí)現(xiàn)。shutil.copytree(folder_rename,folder_copy) # 復(fù)制到一個(gè)副本shutil.move(folder_copy,folder_move) # 移動(dòng)目錄及文件到新目錄下第9頁,共77頁。3.1 目錄與文件操作組合目錄為新路徑路徑與目錄的組合與拆分組合路徑可通過os.path.join(pat

5、h_name1,path_name_n)方法實(shí)現(xiàn)os.path.join(os.getcwd(),new_folder) #組合后的結(jié)果為D:書籍python數(shù)據(jù)分析3_附件chapter3new_folder第10頁,共77頁。3.1 目錄與文件操作判斷是否為目錄目錄的判斷判斷特定對(duì)象是否為目錄的,使用方法是os.path.isdir(path_name),例如:os.path.isdir(os.getcwd() # 返回結(jié)果為True。os.path.isdir(os.path.join(os.getcwd(),data.csv) # 返回結(jié)果為False判斷目錄是否存在判斷目錄是否存,使

6、用方法是os.path.exists,例如:os.path.exists(os.getcwd() # 返回Trueos.path.exists(test_dir) # 返回False第11頁,共77頁。3.1 目錄與文件操作使用os.listdir獲取文件列表遍歷目錄如果是單層目錄,可以直接使用os.listdir(path_name)獲取文件列表,例如:for file in os.listdir(os.getcwd():# 通過os.listdir 獲得當(dāng)前目錄下的所有文件和文件夾,并結(jié)合for循環(huán)遍歷每個(gè)文件 print(file)# 打印輸出每個(gè)文件/文件夾第12頁,共77頁。3.1

7、目錄與文件操作使用os.walk遍歷目錄遍歷目錄如果是多層級(jí)目錄,那么os.listdir(path_name)方法無法一次性讀出所有子文件夾或目錄內(nèi)的內(nèi)容,這時(shí)可使用os.walk(path_name)實(shí)現(xiàn)。for dirpath,dirnames,filenames in os.walk(os.getcwd(): # 使用os.walk方法配合for循環(huán)讀出目錄名,包含的子目錄列表以及當(dāng)前目錄下的文件列表 for file in filenames:# 使用for循環(huán)讀出每個(gè)目錄下的文件 fullpath = os.path.join(dirpath,file)# 使用os.path.jo

8、in將文件目錄路徑和文件名組合起來,形成完整路徑文件 print(fullpath)# 打印輸出文件第13頁,共77頁。3.1 目錄與文件操作復(fù)制文件文件的基本操作(1)使用shutil.copyfile復(fù)制文件(不包含元數(shù)據(jù)),如果目標(biāo)文件已存在會(huì)被覆蓋,用法是:shutil.copyfile(demo.xlsx,demo_copy1.xlsx) # 將demo.xlsx復(fù)制為新文件demo_copy1.xlsx(2)使用shutil.copymode復(fù)制文件權(quán)限,不復(fù)制其他內(nèi)容,用法是:shutil.copymode(demo.xlsx,demo_copy1.xlsx) # 復(fù)制demo.

9、xlsx的權(quán)限到文件demo_copy1.xlsx第14頁,共77頁。3.1 目錄與文件操作復(fù)制文件文件的基本操作(3)使用shutil.copystat復(fù)制權(quán)限、最后訪問時(shí)間、最后修改時(shí)間,不復(fù)制其他內(nèi)容,用法是:shutil.copystat(demo.xlsx,demo_copy1.xlsx)第15頁,共77頁。3.1 目錄與文件操作復(fù)制文件文件的基本操作(4)使用shutil.copy復(fù)制文件到另一個(gè)文件或目錄。如果復(fù)制到目錄,那么會(huì)在文件夾中創(chuàng)建或覆蓋一個(gè)文件,且該文件與源文件名相同。文件權(quán)限也會(huì)被復(fù)制。用法是:shutil.copy(demo.xlsx,demo_copy2.xls

10、x) # 復(fù)制到一個(gè)新文件shutil.copy(demo.xlsx,folder_move) # 復(fù)制到目錄folder_move第16頁,共77頁。3.1 目錄與文件操作復(fù)制文件文件的基本操作(5)使用shutil.copy2復(fù)制文件到另一個(gè)文件或目錄。該方法與與 shutil.copy() 類似,另外會(huì)同時(shí)復(fù)制文件的元數(shù)據(jù)。實(shí)際上,該方法是 shutil.copy() 和 shutil.copystat() 組合。用法是:shutil.copy2(demo.xlsx,demo_copy3.xlsx) # 復(fù)制到一個(gè)新文件shutil.copy2(demo.xlsx,folder_rena

11、me) # 復(fù)制到目錄folder_rename第17頁,共77頁。3.1 目錄與文件操作移動(dòng)文件文件的基本操作移動(dòng)文件使用shutil.move方法,用法是:shutil.move(demo_copy3.xlsx,folder_move) # 移動(dòng)到目錄folder_move刪除文件刪除文件使用os.remove方法,用法是:os.remove(demo_copy2.xlsx) # 刪除文件第18頁,共77頁。3.1 目錄與文件操作重命名文件文件的基本操作重命名一般情況下使用os.rename方法,用法是:os.rename(demo_copy1.xlsx,demo_copy1_new.xl

12、sx) # 將demo_copy1.xlsx重命名為demo_copy1_new.xlsx判斷是否為文件判斷文件是否存在使用os.path.isfile方法,返回結(jié)果為True或False。用法是:os.path.isfile(demo_copy1_new.xlsx) # 返回結(jié)果為True。第19頁,共77頁。3.1 目錄與文件操作從路徑中獲取文件擴(kuò)展名文件的基本操作可以使用os.path.split()方法可以將文件切分出來。這里使用os.path.splitext則可以將文件擴(kuò)展名切分出來。例如:os.path.splitext(demo_copy1_new.xlsx) # 返回(dem

13、o_copy1_new, .xlsx)第20頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入用read、readline和readlines方法讀取文件讀寫普通文件open方法打開文件時(shí)支持不同的讀、寫或追加模式,如下表所示打開模式說明r以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。默認(rèn)打開模式rb以二進(jìn)制格式打開一個(gè)文件用于只讀r+打開一個(gè)文件用于讀寫第21頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入用read、readline和readlines方法讀取文件讀寫普通文件打開模式說明rb+以二進(jìn)制格式打開一個(gè)文件用于讀寫w打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋;如果該文件不存在,則創(chuàng)建新

14、文件wb以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋;如果該文件不存在,則創(chuàng)建新文件第22頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入用read、readline和readlines方法讀取文件讀寫普通文件打開模式說明wb+以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋;如果該文件不存在,則創(chuàng)建新文件a打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾,也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入第23頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入用read、readline和readlines方法讀取文件讀寫普通文件打

15、開模式說明ab以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾,也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入第24頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入用read、readline和readlines方法讀取文件讀寫普通文件打開模式說明a+打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾,文件打開時(shí)會(huì)是追加模式。如果該文件不存在,則創(chuàng)建新文件用于讀寫ab+以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾;如果該文件不存在,則創(chuàng)建新文件用于讀寫第25頁,共77頁。3.2數(shù)據(jù)文件的讀

16、取與寫入用read、readline和readlines方法讀取文件讀寫普通文件data_file = raw_data # 定義了一個(gè)數(shù)據(jù)文件# read方法with open(data_file) as f:# data1 = f.read() # print(data1)# # readline方法with open(data_file) as f:# data2 = f.readline()# print(data2)# # readlines方法with open(data_file) as f:# data3 = f.readlines()# print(data3)# 使用rea

17、d方法讀取文件內(nèi)容,讀取結(jié)果是一個(gè)完整字符串使用readline方法讀取文件內(nèi)容,讀取結(jié)果為當(dāng)前指針?biāo)诘挠涗涀址褂胷eadlines方法讀取文件內(nèi)容,讀取結(jié)果為當(dāng)前指針?biāo)诘挠涗浀?6頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入write和writelines方法寫入文件讀寫普通文件# write方法with open(raw_data_write,w+) as f:# f.write(data2)# # writelines方法with open(raw_data_writelines,w+) as f:# f.writelines(data3)# 在打開一個(gè)文件對(duì)象f,然后使用write

18、方法將一個(gè)字符串寫入raw_data_write文件在打開一個(gè)文件對(duì)象f,然后使用writelines方法將一個(gè)字符串寫入raw_data_writelines文件第27頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件方法描述read_clipboard從剪切板讀取文本數(shù)據(jù)然后調(diào)用read_table方法解析數(shù)據(jù)到數(shù)據(jù)框read_csv讀取csv文件到數(shù)據(jù)框,默認(rèn)文件分隔符是逗號(hào)read_excel讀取Excel文件到數(shù)據(jù)框,支持xls和xlsx格式的Excelread_feather讀取格式化特征對(duì)象并返回對(duì)象read_fwf讀取表格或固定寬度格式的文

19、本行到數(shù)據(jù)框第28頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件方法描述read_gbq從Google Big Query中讀取數(shù)據(jù)到數(shù)據(jù)框read_hdf讀取HDF文件返回其選擇的對(duì)象read_html讀取HTML信息并返回由數(shù)據(jù)框組成的列表read_json讀取Json信息并返回 Series或數(shù)據(jù)框read_msgpack從指定的文件路徑加載msgpack pandas對(duì)象,目前還是一個(gè)實(shí)驗(yàn)庫,存儲(chǔ)格式可能在將來發(fā)布之前不穩(wěn)定第29頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件方法描述read_parqu

20、et讀取parquet對(duì)象并返回?cái)?shù)據(jù)框read_pickle讀取序列化/持久化的對(duì)象并返回read_sas以XPORT或SAS7BDAT格式讀取SAS文件并返回?cái)?shù)據(jù)框、SAS7BDATReader或XportReader對(duì)象第30頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件方法描述read_sql將SQL查詢結(jié)果或數(shù)據(jù)庫表讀入數(shù)據(jù)框,它是read_sql_query和read_sql_table的封裝。SQL查詢將調(diào)用read_sql_query,而數(shù)據(jù)庫表將調(diào)用read_sql_tableread_sql_query將SQL查詢結(jié)果讀入數(shù)據(jù)框第31

21、頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件方法描述read_sql_table將數(shù)據(jù)庫表讀入數(shù)據(jù)框read_stata讀取stata文件到數(shù)據(jù)框read_table讀取通用分隔符分隔的數(shù)據(jù)文件到數(shù)據(jù)框,默認(rèn)分隔符是制表符第32頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件(1)使用read_cvs方法讀取數(shù)據(jù)。通過read_csv方法可以讀取csv(默認(rèn))及其他格式的數(shù)據(jù)文件。語法:read_csv(filepath_or_buffer, sep=, delimiter=None, header=infer

22、, names=None, index_col=None, usecols=None, *kwds)第33頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件常用參數(shù): filepath_or_buffer:字符串,要讀取的文件對(duì)象,必填。sep:字符串,分隔符號(hào),選填,默認(rèn)值為英文逗號(hào),。特殊情況下,如果數(shù)據(jù)分割符號(hào)含有多個(gè),例如多列之間通過“|+|”(三個(gè)符號(hào))分隔的,那么分隔符sep的值可以設(shè)置為|+|,這是python正則表達(dá)式語法。 names:類數(shù)組,列名,選填,默認(rèn)值為空。第34頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv

23、等數(shù)據(jù)文件讀寫普通文件常用參數(shù): engine:解析引擎,默認(rèn)情況下設(shè)置為python,這樣設(shè)置的好處是功能更全面;而如果設(shè)置為c則解析速度更快,在大文件解析時(shí)更好用。但是,并不是所有情況下都可以設(shè)置為c,例如在上面的sep解析規(guī)則中,如果設(shè)置為|+|則無法指定解析引擎為c。 skiprows:類字典或整數(shù)型,要跳過的行或行數(shù),選填,默認(rèn)為空。第35頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件常用參數(shù): nrows:整數(shù)型,要讀取的前記錄總數(shù),選填,默認(rèn)為空,常用來在大型數(shù)據(jù)集下做初步探索之用。 na_values:NA值的表現(xiàn)字符串,系統(tǒng)中已經(jīng)默認(rèn)

24、支持將, #N/A, #N/A N/A, #NA, -1.#IND, -1.#QNAND, 1.#QNAN, N/A, NA, NULL, NaN, nan識(shí)別為NA值,如果數(shù)據(jù)中有其他NA值的表現(xiàn)形式,可以在這里指定,例如設(shè)置na_values= ,None將字符串空格和None識(shí)別為NA值。第36頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件常用參數(shù): thousands:字符串,千位符符號(hào),選填,默認(rèn)為空。decimal:字符串,小數(shù)點(diǎn)符號(hào),選填,默認(rèn)為點(diǎn)(.),在特定情況下應(yīng)用,例如歐洲的千位符和小數(shù)點(diǎn)跟中國地區(qū)相反,歐洲的4.321,1對(duì)應(yīng)中

25、國的4,321.1。第37頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件常用參數(shù): encoding:文件編碼,默認(rèn)情況下是utf-8,但需要注意的是從原始數(shù)據(jù)庫中導(dǎo)出的數(shù)據(jù)可能有各種編碼,例如gb2312、latin1等,因此這里要設(shè)置為跟原始數(shù)據(jù)一致的編碼格式。第38頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件示例:import pandas as pd# 導(dǎo)入pandas庫data = pd.read_csv(data.csv,names=a,b,c,d,e.split(,)# 調(diào)用pd.read_cs

26、v讀取data.csv文件,同時(shí)通過names指定文件名,names的值通過字符串的split方法以逗號(hào)為分隔符切分為一個(gè)包含5個(gè)字符串元素的列表print(data)# 打印輸出數(shù)據(jù)第39頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件(2)使用read_table方法讀取數(shù)據(jù)。通過read_table方法可以讀取通用分隔符分隔的數(shù)據(jù)文件到數(shù)據(jù)框。只要分隔符有一定規(guī)則即可。語法:read_table(filepath_or_buffer, sep=t, delimiter=None, header=infer, names=None, index_co

27、l=None, usecols=None, *kwds)第40頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫csv、txt、tsv等數(shù)據(jù)文件讀寫普通文件(2)使用read_table方法讀取數(shù)據(jù)。通過read_table方法可以讀取通用分隔符分隔的數(shù)據(jù)文件到數(shù)據(jù)框。只要分隔符有一定規(guī)則即可。示例:table_data = pd.read_table(table_data.txt, sep=;,names=a,b,c,d,e.split(,) # 調(diào)用read_table方法讀取table_data.txt文件print(table_data) # 打印輸出結(jié)果第41頁,共77頁。3.2數(shù)據(jù)文件的

28、讀取與寫入使用pandas的to_csv保存為數(shù)據(jù)文件讀寫普通文件數(shù)據(jù)框?qū)ο蟊4鏋槠胀ㄎ募r(shí),使用其to_csv方法即可。語法:to_csv(path_or_buf=None, sep=, na_rep=, float_format=None, columns=None, header=True, index=True, index_label=None, *kwds)第42頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的to_csv保存為數(shù)據(jù)文件讀寫普通文件數(shù)據(jù)框?qū)ο蟊4鏋槠胀ㄎ募r(shí),使用其to_csv方法即可。常用參數(shù):(1) filepath_or_buffer:字符串,要讀取

29、的文件對(duì)象,必填。(2) sep:字符串,分隔符號(hào),選填,默認(rèn)值為英文逗號(hào),。也可以指定為其他任意字符。(3) na_rep:NA值表示方法,選填,默認(rèn)值為空。(4) header:header信息是否導(dǎo)出,默認(rèn)為True。第43頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的to_csv保存為數(shù)據(jù)文件讀寫普通文件數(shù)據(jù)框?qū)ο蟊4鏋槠胀ㄎ募r(shí),使用其to_csv方法即可。常用參數(shù):(5) index:index是否導(dǎo)出,默認(rèn)為True。(6) compression:字符串型,設(shè)置輸出文件的壓縮選項(xiàng),可設(shè)置為gzip, bz2, zip, xz或None。(7) encoding:文件

30、編碼,Python3中默認(rèn)是utf-8。第44頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫普通文件示例:table_data.to_csv(table_data_output.txt,sep=,index=False)使用pandas的to_csv保存為數(shù)據(jù)文件數(shù)據(jù)框?qū)ο蟊4鏋槠胀ㄎ募r(shí),使用其to_csv方法即可。第45頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫Excel文件語法: read_excel(io, sheet_name=0, header=0, names=None, index_col=None, *kwds)使用pandas的read_excel讀取excel文件Pand

31、as有讀取Excel的方法read_excel第46頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的read_excel讀取excel文件讀寫Excel文件常用參數(shù):(1) io:字符串、文件路徑、Pandas Exce或xlrd工作簿,必填。(2)sheet_name:字符串、整數(shù)或混合字符串、整數(shù)的列表或None,默認(rèn)是0,即第一個(gè)sheet。字符串指sheet名稱,整數(shù)指sheet索引的sheet位置,列表則用來表示多個(gè)連續(xù)或不連續(xù)的sheet,設(shè)置為None表示獲取全部sheet。當(dāng)設(shè)置為字符串或整數(shù)時(shí)返回?cái)?shù)據(jù)框,當(dāng)設(shè)置為列表或None時(shí)返回由數(shù)據(jù)框構(gòu)成的字典。第47頁,共7

32、7頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的read_excel讀取excel文件讀寫Excel文件常用參數(shù):(3) header:整數(shù)或由整數(shù)構(gòu)成的列表,默認(rèn)為0。該參數(shù)表示使用哪一行信息來解析為數(shù)據(jù)框的列名,默認(rèn)0代表第一行。如果設(shè)置為由整數(shù)列表,那么將使用多行信息組成聯(lián)合索引。如果設(shè)置為None代表表示Excel中沒有列表信息。(4) names:類數(shù)組,默認(rèn)為None,用來表示列名,僅當(dāng)header設(shè)置為None時(shí)使用。第48頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的read_excel讀取excel文件讀寫Excel文件常用參數(shù):(5) index_col:整數(shù)

33、或由整數(shù)構(gòu)成的列表,默認(rèn)為None。該參數(shù)表示哪一列表示index值。如果設(shè)置為由整數(shù)列表,那么將使用多行信息組成聯(lián)合索引。(6) skiprows:類列表,要跳過的行或行數(shù),選填,默認(rèn)為空。第49頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的read_excel讀取excel文件讀寫Excel文件常用參數(shù):(7)na_values:NA值的表現(xiàn)字符串,系統(tǒng)中已經(jīng)默認(rèn)支持將as NaN: , #N/A, #N/A N/A, #NA, -1.#IND, -1.#QNAN, -NaN, -nan,1.#IND, 1.#QNAN, N/A, NA, NULL, NaN, n/a, nan

34、,null.識(shí)別為NA值,如果數(shù)據(jù)中有其他NA值的表現(xiàn)形式,可以在這里指定,例如設(shè)置na_values= ,None將字符串空格和None識(shí)別為NA值。第50頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫Excel文件示例:import pandas as pd# 導(dǎo)入pandas庫data_file = demo.xlsx# 定義了一個(gè)Excel文件data_1 = pd.read_excel(data_file,sheet_name = 0)# 讀取第一個(gè)sheet中的數(shù)據(jù)print(data_1)# 打印輸出data_2 = pd.read_excel(data_file,sheet_na

35、me = 1)# 讀取第二個(gè)sheet中的數(shù)據(jù)print(data_2)# 打印輸出data_3 = pd.read_excel(data_file,sheet_name=None)# 讀取所有的sheet文件print(data3)# 打印輸出使用pandas的read_excel讀取excel文件第51頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫Excel文件語法:to_excel(excel_writer, sheet_name=Sheet1, na_rep=, float_format=None, columns=None, header=True, index=True, index

36、_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep=inf, verbose=True, freeze_panes=None)使用pandas的to_excel寫入excel文件Pandas寫入excel主要使用to_excel方法第52頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入使用pandas的to_excel寫入excel文件讀寫Excel文件常用參數(shù):excel_writer:字符串或excel_writer對(duì)象,必填。sheet_name:字符串,默認(rèn)是She

37、et1。 header:布爾型或字符串列表,寫入Excel中的列名,默認(rèn)為True。設(shè)置為字符串列表將為導(dǎo)出的數(shù)據(jù)設(shè)置列名的別名。 index:index是否導(dǎo)出,默認(rèn)為True。第53頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫Excel文件示例:data_2.to_excel(demo_write_1.xlsx) # 將data_2寫入到demo_write_1.xlsx使用pandas的read_excel讀取excel文件(1)寫入單個(gè)sheet到Excel第54頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫Excel文件示例:with pd.ExcelWriter(demo_write

38、_2.xlsx) as writer:# pd.ExcelWriter打開一個(gè)名為demo_write_2.xlsx,并創(chuàng)建對(duì)象writer for name,data in data_3.items(): # 使用for循環(huán)遍歷data_3的key-value鍵值對(duì),獲取每個(gè)sheet的名稱和數(shù)據(jù) data.to_excel(writer,sheet_name=name)# 使用to_excel方法寫入writer對(duì)象writer.save() # 保存創(chuàng)建并寫入的數(shù)據(jù)信息使用pandas的read_excel讀取excel文件(2)寫入多個(gè)sheet到同一個(gè)Excel。在一個(gè)sheet中寫

39、入多個(gè)sheet,需要配合pandas的ExcelWriter方法第55頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫JSON文件語法:json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, *kw)使用json.load讀取json文件json.load方法可以將json文件讀取出來。第56頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫JSON文件常用參數(shù):使用json.load讀取json文件 fp:JS

40、ON數(shù)據(jù)文件對(duì)象,該對(duì)象需要支持.read()方法示例:import json # 導(dǎo)入Python自帶的JSON庫with open(geo.json) as f:# 使用with方法讀取文件對(duì)象為f json_data = json.load(f) # 使用json的load方法讀取文件對(duì)象f,讀取的結(jié)果json_data是一個(gè)字典格式lat_lng = json_dataresultlocation # 使用多層key找到目標(biāo)信息,代碼中獲取了location信息print(lat_lng) # 打印輸出第57頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫JSON文件語法:json.dum

41、p(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, *kw)使用json.dump寫入json文件json.dump方法可以將json對(duì)象寫入文件第58頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫JSON文件常用參數(shù):使用json.dump寫入json文件(1) obj:JSON數(shù)據(jù)對(duì)象(2) fp:要寫入的文件對(duì)象,該對(duì)象需要支持.w

42、rite()方法(3) ensure_ascii:布爾型,設(shè)置為False表示可以包含非ASCII編碼字符串,例如中文第59頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫JSON文件示例:使用json.dump寫入json文件with open(geo2.json,w+) as f:# 使用open方法打開geo2.json文件,并使用w+模式設(shè)置如果該文件已存在則將其覆蓋;如果該文件不存在,則創(chuàng)建新文件,配合with方法創(chuàng)建文件對(duì)象f json.dump(json_data,f)# 使用json的dump方法將json_data寫入文件對(duì)象f第60頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫S

43、PSS Statistics /SAS/Stata數(shù)據(jù)文件示例:使用pyreadstat.read_sav讀取SPSS Statistics數(shù)據(jù)文件import pyreadstat# 導(dǎo)入pyreadstat庫data, meta = pyreadstat.read_sav(ships.sav)# 調(diào)用pyreadstat的read_sav方法,讀取ships.sav文件,返回data和meta信息data.head()# 調(diào)用DataFrame的head方法,顯示前5條數(shù)據(jù)vars(meta).keys()# 調(diào)用系統(tǒng)的vars方法,將meta對(duì)象轉(zhuǎn)換為字典對(duì)象,這樣便可以通過字典的方法獲

44、取對(duì)應(yīng)的值第61頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫SPSS Statistics /SAS/Stata數(shù)據(jù)文件示例:使用pyreadstat.read_sas7bdat讀取SAS數(shù)據(jù)文件import pyreadstat# 導(dǎo)入pyreadstat庫data,meta = pyreadstat.read_sas7bdat(omov.sas7bdat)# 調(diào)用pyreadstat的read_sas7bdat方法讀取omov.sas7bdat文件,并返回?cái)?shù)據(jù)框?qū)ο骴ata和metadata.head()# 調(diào)用data的head方法,展示前5條數(shù)據(jù)第62頁,共77頁。3.2數(shù)據(jù)文件的讀取

45、與寫入讀寫SPSS Statistics /SAS/Stata數(shù)據(jù)文件示例:使用pyreadstat.read_dta讀取Stata數(shù)據(jù)文件import pyreadstat# 導(dǎo)入pyreadstat庫data,meta = pyreadstat.read_dta(stata.dta)# 調(diào)用pyreadstat的read_dta方法讀取stata.dta文件,并返回?cái)?shù)據(jù)框?qū)ο骴ata和metadata.head()# 調(diào)用data的head方法,展示前5條數(shù)據(jù)第63頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫R數(shù)據(jù)文件示例:使用pyreadr.read_r讀取R語言數(shù)據(jù)文件import p

46、yreadr# data = pyreadr.read_r(R_data.Rdata)# 調(diào)用pyreadr.read_r方法讀取R_data.Rdata文件,并返回字典對(duì)象dataprint(data.keys()# 打印data的所有key,即數(shù)據(jù)文件對(duì)象的名稱。該對(duì)象中,只有一個(gè)數(shù)據(jù)對(duì)象raw_data:odict_keys(raw_data)dataraw_data.head()# 第64頁,共77頁。3.2數(shù)據(jù)文件的讀取與寫入讀寫R數(shù)據(jù)文件示例:使用pyreadr.write_rdata保存為R數(shù)據(jù)文件pyreadr.write_rdata(R_data_output.RData,

47、dataraw_data, df_name=data)第65頁,共77頁。3.3數(shù)據(jù)庫的讀取與寫入讀寫結(jié)構(gòu)化(關(guān)系型)數(shù)據(jù)庫MySQLPymysql操作MySQL的基本流程:建立MySQL連接獲得游標(biāo)執(zhí)行SQL語句解析返回結(jié)果提交連接動(dòng)作關(guān)閉游標(biāo)和連接第66頁,共77頁。3.3數(shù)據(jù)庫的讀取與寫入讀寫結(jié)構(gòu)化(關(guān)系型)數(shù)據(jù)庫MySQLPymysql操作MySQL的基本流程:1) 導(dǎo)入庫及定義數(shù)據(jù)庫連接信息import pymysql # 導(dǎo)入pymysqlimport numpy as np# 導(dǎo)入numpyimport pandas as pd# 導(dǎo)入pandas# 定義數(shù)據(jù)庫連接信息confi

48、g = host: , # 主機(jī)名 user: root, # 用戶名 password: 123456, # 密碼 port: 3306, # 端口 database: python_data, # 數(shù)據(jù)庫名 charset: utf8 # 字符編碼 第67頁,共77頁。3.3數(shù)據(jù)庫的讀取與寫入讀寫結(jié)構(gòu)化(關(guān)系型)數(shù)據(jù)庫MySQLPymysql操作MySQL的基本流程:(2)連接數(shù)據(jù)庫。在定義好數(shù)據(jù)庫基本信息后,下面開始獲取數(shù)據(jù)庫連接對(duì)象,包括數(shù)據(jù)庫連接以及游標(biāo)。# 連接數(shù)據(jù)庫cnn = pymysql.connect(*config)# 使用pymysql.connect方法并調(diào)用conf

49、ig信息建立數(shù)據(jù)庫連接cnncursor = cnn.cursor()# 通過cursor方法獲取游標(biāo)cursor第68頁,共77頁。3.3數(shù)據(jù)庫的讀取與寫入讀寫結(jié)構(gòu)化(關(guān)系型)數(shù)據(jù)庫MySQLPymysql操作MySQL的基本流程:(3)讀取數(shù)據(jù)庫中的現(xiàn)有數(shù)據(jù)sql = SELECT * FROM order# 要執(zhí)行的SQL語句,該SQL語句的意思是從現(xiàn)有的order數(shù)據(jù)表中讀取所有的數(shù)據(jù)cursor.execute(sql)# 調(diào)用cursor的execute執(zhí)行定義好的SQL語句data = cursor.fetchall()# 調(diào)用cursor的fetchall方法返回所有符合SQL

50、條件的記錄,除了該方法,也可以使用fetchmany指定返回結(jié)果的數(shù)量,或者使用fetchone只返回一條結(jié)果for i in data:2:# 讀取每條數(shù)據(jù) print(i) # 打印第69頁,共77頁。3.3數(shù)據(jù)庫的讀取與寫入讀寫結(jié)構(gòu)化(關(guān)系型)數(shù)據(jù)庫MySQLPymysql操作MySQL的基本流程:(4)寫入數(shù)據(jù)到數(shù)據(jù)庫。判斷目標(biāo)表是否存在,如果不存在則新建。cursor.execute(show tables) # 查詢當(dāng)前數(shù)據(jù)庫中的所有表的表名table_object = cursor.fetchall() # fetchall方法,返回所有表結(jié)果table_list = t0 for t in table_object # 通過列表推導(dǎo)式,提取將返回結(jié)果中的表名if not python_table in table_list: # 通過判斷判斷表名是否存在 cursor.execute(# 執(zhí)行函數(shù) CREATE TABLE python_table (#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論