數(shù)據(jù)分析從零開始實(shí)戰(zhàn) (三)

零、寫在前面
前面兩篇文章基礎(chǔ)篇(一)和基礎(chǔ)篇(二)講了數(shù)據(jù)分析虛擬環(huán)境創(chuàng)建和pandas讀寫csv、tsv、json格式的數(shù)據(jù),今天我們繼續(xù)探索pandas讀取數(shù)據(jù)。
本系列學(xué)習(xí)筆記參考書籍:《數(shù)據(jù)分析實(shí)戰(zhàn)》托馬茲·卓巴斯
一、基本知識(shí)概要
1.利用pandas讀寫Excel文件
2.利用pandas讀寫XML文件
二、開始動(dòng)手動(dòng)腦
1.利用Python讀寫Excel
讀取,利用Pandas庫(kù)的ExcelFile()方法。
寫入,利用
代碼

讀取結(jié)果:

寫入結(jié)果:

可能報(bào)錯(cuò):

解決方法:

2.利用Python讀寫XML文件
學(xué)過(guò)java的同學(xué)對(duì)XML應(yīng)該不陌生,全稱是eXtensible Markup Language(擴(kuò)展標(biāo)記語(yǔ)言),雖然平時(shí)不常見(jiàn),但是Web API里支持XML編碼。
讀寫代碼


運(yùn)行結(jié)果


代碼解析
(1)read_xml(xml_FileName)函數(shù)
功能:讀入XML數(shù)據(jù),返回pa.DataFrame
這里利用到了一個(gè)輕量級(jí)的XML解析器:xml.etree.ElementTree。傳入文件名,先讀取文件內(nèi)容,然后利用parse()函數(shù)解析XML,創(chuàng)建一個(gè)樹狀結(jié)構(gòu)并存放在tree變量中,在tree對(duì)象上調(diào)用getroot()方法得到根節(jié)點(diǎn),最后調(diào)用iter_records()函數(shù),傳入根節(jié)點(diǎn),進(jìn)而將返回的信息轉(zhuǎn)換成DataFrame。
(2)iter_records(records)函數(shù)
功能:遍歷有記錄的生成器
iter_records()方法是一個(gè)生成器,從關(guān)鍵字yield
可以看出來(lái),如果你不了解生成器,可以點(diǎn)擊這里,與return不同,生成器每次只向主調(diào)方法返回一個(gè)值,直到結(jié)束。
(3)write_xml(xmlFile, data)函數(shù)
功能:以XML格式保存數(shù)據(jù)
這里需要注意的是得按XML文件格式進(jìn)行保存,我們要做的就是三步:保存頭部格式、按格式保存數(shù)據(jù)、保存尾部格式。保存數(shù)據(jù)時(shí)用到了DataFrame對(duì)象的apply()方法,遍歷內(nèi)部每一行,第一個(gè)參數(shù)xml_encode指定了要應(yīng)用到每一行記錄上的方法,axis=1表示按行處理,默認(rèn)值為0,表示按列處理。
(4)xml_encode(row)函數(shù)
功能:以特定的嵌套格式將每一行編碼成XML
在寫數(shù)據(jù)的過(guò)程我們會(huì)調(diào)用這個(gè)方法,對(duì)每行數(shù)據(jù)進(jìn)行處理,變成XML格式。
end.
作者:老表的第一個(gè)一百萬(wàn).

掃描下方二維碼報(bào)名參加課程
