版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章Python在財(cái)務(wù)文本解析自動化領(lǐng)域的應(yīng)用目錄013.1Python在財(cái)務(wù)文本解析自動化領(lǐng)域的應(yīng)用介紹020403第三章Python在財(cái)務(wù)文本解析自動化領(lǐng)域的應(yīng)用3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能053.5文檔主題可視化技術(shù)063.6文檔主題可視化案例實(shí)戰(zhàn)——貴州茅臺3.1Python在財(cái)務(wù)文本解析自動化領(lǐng)域的應(yīng)用介紹Python在財(cái)務(wù)文本解析自動化中的一些核心應(yīng)用:銀行業(yè)務(wù)流程與財(cái)務(wù)報(bào)告自動化內(nèi)部審計(jì)與風(fēng)險(xiǎn)合規(guī)監(jiān)控上市公司年報(bào)深度解析與綜合財(cái)務(wù)數(shù)據(jù)分析3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫的安裝:在進(jìn)行PDF文本解析時(shí),推薦使用pip安裝方法來安裝pdfplumber庫。安裝過程與之前介紹的pip安裝方法相似,具體步驟如下:(1)按下鍵盤上的“Win+R”組合鍵,調(diào)出運(yùn)行對話框。(2)輸入“cmd”并點(diǎn)擊“確定”,打開命令提示符窗口。(3)在控制臺中輸入命令“pipinstallpdfplumber”。(4)按下“Enter”鍵,啟動安裝過程,并等待其完成。若遇到安裝問題,可嘗試使用清華大學(xué)提供的鏡像源進(jìn)行安裝?;蛘呖梢允褂萌缦麓a進(jìn)行安裝,其效果與之前描述的相同:安裝界面的顯示如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:pdfplumber庫的使用非常簡單。通過調(diào)用庫中的extract_text()方法,可以輕松解析PDF文件第一頁的文本內(nèi)容。運(yùn)行效果如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:若需解析文檔中每一頁的內(nèi)容,可通過for循環(huán)語句實(shí)現(xiàn)。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取文本內(nèi)容:或者采用如下代碼:3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格補(bǔ)充知識點(diǎn):文件的相對路徑與絕對路徑:相對路徑:相對路徑指相對于當(dāng)前代碼文件所在目錄的路徑。例如,上面案例中使用pdfplumber.open('公司A理財(cái)公告.PDF')表示打開與代碼文件同一目錄下的PDF文件。若路徑寫為pdfplumber.open('XX文件夾/公司A理財(cái)公告.PDF'),則指打開當(dāng)前目錄下“XX文件夾”中的PDF文件。絕對路徑:絕對路徑提供了文件在文件系統(tǒng)中的完整路徑。例如,“E:\測試\公司A理財(cái)公告.PDF”是一個(gè)絕對路徑。由于在Python中,反斜杠“\”用作轉(zhuǎn)義字符,例如“\n”代表換行,因此在書寫絕對路徑時(shí),建議使用雙反斜杠“E:\\測試\\公司A理財(cái)公告.PDF”以避免轉(zhuǎn)義字符的混淆。除了使用雙反斜杠外,還可以在路徑字符串前加上字母“r“,以指示該字符串為原始字符串,從而忽略單個(gè)反斜杠的特殊含義。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:pdfplumber庫不僅能夠解析PDF文檔中的普通文本內(nèi)容,還具備解析文檔內(nèi)表格的功能。例如,在“公司A理財(cái)公告.PDF”文檔的第4頁,就包含了如圖所示的表格內(nèi)容。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:使用pdfplumber庫的extract_tables()方法可以提取頁面中的表格,代碼如下:輸出結(jié)果見圖。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:得到的table是一個(gè)嵌套列表結(jié)構(gòu),其中大列表包含多個(gè)小列表,每個(gè)小列表代表表格中的每一行。為了使表格的展現(xiàn)效果更佳,可以利用pandas庫,代碼如下。其中,table[0]代表表頭信息,而table[1:]代表第2行及其以下的內(nèi)容。獲得的表格df如圖所示。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:表格中可能存在一些換行符\n,這是由于原表格中相應(yīng)字符之間存在換行。若需去除這些換行符,可以使用replace()函數(shù)進(jìn)行替換,代碼如下:由于table是一個(gè)嵌套列表,需要通過兩層循環(huán)定位到具體的文本內(nèi)容。table[i]表示子列表,table[i][j]表示子列表中的元素。使用replace()函數(shù)替換換行符后,需要將替換后的內(nèi)容重新賦值給table[i][j]以完成替換。替換后的表格輸出展示在圖中,其中換行符已被去除。3.2PDF文本解析基礎(chǔ)——提取PDF文本與表格pdfplumber庫提取表格內(nèi)容:此外,某些IDE(如PyCharm)在展示DataFrame時(shí)可能僅展示部分列而非全部,如圖所示。為了展示DataFrame的全部列,可以在打印查看DataFrame之前添加如下代碼行,即可展示DataFrame的所有列:此時(shí)打印輸出效果如圖所示。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:本節(jié)以貴州茅臺2020年年報(bào)為例,進(jìn)行上市公司年報(bào)的解析實(shí)戰(zhàn)。附錄代碼中已提供貴州茅臺年報(bào)PDF,無需額外搜索下載。實(shí)戰(zhàn)中,將重點(diǎn)解析公司的核心競爭力和未來展望這兩部分內(nèi)容,這兩部分的內(nèi)容可通過第3.2節(jié)介紹的文本內(nèi)容提取方法從年報(bào)中提取。打開貴州茅臺的年報(bào)PDF,找到公司的核心競爭力部分,位于年報(bào)的第三節(jié)“公司業(yè)務(wù)概要”之下,如圖所示。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:首先,使用pdfplumber庫將貴州茅臺年報(bào)PDF解析為字符串,操作方法在前文已有詳細(xì)介紹,此處不再贅述。解析字符串的代碼如下:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:下面的提取工作主要利用re庫定位“核心競爭力”段落在PDF中的位置。re庫是Python自帶的標(biāo)準(zhǔn)庫,無需額外安裝,其主要功能是通過正則表達(dá)式匹配字符串。要提取的內(nèi)容通常以“核心競爭力分析”開頭,之后是第四節(jié)的內(nèi)容(即第三節(jié)的最后一部分),可以使用此匹配規(guī)則結(jié)合re.findall函數(shù)提取符合規(guī)則的段落。由于re.findall返回的是所有符合匹配規(guī)則的段落,即res是列表,需先取列表的第一個(gè)元素res[0]。接下來進(jìn)行數(shù)據(jù)清洗工作,如去除結(jié)果字符串中的“\n”和“2020年年度報(bào)告”等字符(由于此處不存在翻頁,故不存在“2020年年度報(bào)告”字符。但在實(shí)際操作中,若存在翻頁則用相應(yīng)的代碼進(jìn)行刪除)。這里使用replace方法,也可使用re庫的sub方法。最后,使用strip方法去除前后空格,得到包含核心競爭力信息的字符串。完整的提取代碼如下:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:提取到的字符串使用print輸出結(jié)果,如圖所示。接下來,使用類似方法提取年報(bào)中上市公司關(guān)于未來發(fā)展的展望部分。定位這部分內(nèi)容在年報(bào)中的位置,如圖所示。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:與核心競爭力披露的解析過程相似,首先解析PDF文件,代碼如下:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液單個(gè)上市公司年報(bào)解析——以貴州茅臺為例:然后,根據(jù)該部分前后文的特點(diǎn)提取內(nèi)容,代碼如下:代碼與上一個(gè)部分的不同在于第3行取了結(jié)果列表中的第二個(gè)元素res[1],因?yàn)樵谀陥?bào)中符合第2行正則表達(dá)式匹配規(guī)則的內(nèi)容有兩個(gè),第一個(gè)是詳細(xì)版目錄中出現(xiàn)的,而需要的是第二個(gè)元素。最后提取到的年報(bào)中未來展望的內(nèi)容的打印結(jié)果如圖所示。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:在掌握了單家公司年報(bào)的解析方法后,進(jìn)一步探討如何提高效率,實(shí)現(xiàn)對多家公司年報(bào)的批量解析,例如白酒行業(yè)某一年份所有公司的年報(bào)。在分析五糧液2020年年報(bào)中公司未來發(fā)展展望的部分時(shí),如圖所示,可以觀察到與貴州茅臺年報(bào)的顯著差異。五糧液年報(bào)的相應(yīng)部分標(biāo)題為“公司未來發(fā)展的展望”,而不是“公司關(guān)于公司未來發(fā)展的討論與分析”。這種差異意味著,如果繼續(xù)采用3.2.1節(jié)中介紹的方法進(jìn)行內(nèi)容提取,將無法獲得預(yù)期的結(jié)果。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:上市公司年報(bào)的非結(jié)構(gòu)化文本信息披露存在一定的差異性,這是由于年報(bào)的結(jié)構(gòu)化規(guī)范程度相對較低導(dǎo)致。盡管證監(jiān)會對上市公司的信息披露時(shí)間、方式以及必須披露的內(nèi)容已有較為規(guī)范和統(tǒng)一的規(guī)定,但在非數(shù)據(jù)信息,特別是非結(jié)構(gòu)化的文本信息的披露方式上,并沒有形成統(tǒng)一的標(biāo)準(zhǔn)。大多數(shù)公司雖然會披露相關(guān)內(nèi)容,但披露的具體方式和標(biāo)題存在差異,這為解析工作帶來了挑戰(zhàn)。為了應(yīng)對這一挑戰(zhàn),可以采取增加匹配規(guī)則數(shù)量的策略,以此來提高匹配成功的概率。經(jīng)過細(xì)致的觀察和逐一比對,白酒行業(yè)中各公司在進(jìn)行相應(yīng)信息披露時(shí),其內(nèi)容的格式和位置可以歸納為四種組合方式,即兩種不同的起始方式與兩種不同的結(jié)束方式的組合。確定這些起始和結(jié)束方式后,利用正則表達(dá)式中的非貪婪匹配符(.*?),將它們連接起來,便能夠較為全面地涵蓋各種情況。最后將這些組合規(guī)則納入列表,以備后續(xù)使用。相應(yīng)的代碼如下:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:接下來利用os.listdir方法來檢索目標(biāo)文件夾“白酒行業(yè)年報(bào)”中的所有文件,并對檢索結(jié)果進(jìn)行遍歷。PDF文件名中包含的公司名稱信息,能夠通過去除文件擴(kuò)展名后提取出來。完成解析后,將解析結(jié)果寫入以相應(yīng)公司名稱命名的文本文件中,以此確保輸出結(jié)果的整潔性和有序性。隨后,對PDF文件執(zhí)行解析操作,這一過程在前文中已有詳細(xì)說明(其中第13行可以根據(jù)需要選擇性地進(jìn)行打印輸出,以便于調(diào)試和驗(yàn)證解析結(jié)果),解析得到的文本內(nèi)容text_all將用于后續(xù)的正則表達(dá)式匹配。相應(yīng)的代碼如下:3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:在執(zhí)行正則表達(dá)式匹配的過程中,需逐一嘗試應(yīng)用之前創(chuàng)建的匹配規(guī)則列表。對每個(gè)規(guī)則正則表達(dá)式提取后,進(jìn)行條件判斷:若提取結(jié)果為空(即返回結(jié)果的長度為零),則繼續(xù)應(yīng)用列表的下一個(gè)匹配規(guī)則;若結(jié)果非空,則認(rèn)為已成功匹配到所需內(nèi)容,隨機(jī)退出循環(huán)。這種方法確保了在面對多樣化的文本信息披露格式時(shí),能夠靈活地識別并提取目標(biāo)數(shù)據(jù)。代碼如下:在解析過程中可能會遇到目錄重復(fù)的問題,類似于3.3.1節(jié)中所述情形,解決這一問題的相應(yīng)代碼如下。3.3PDF文本解析實(shí)戰(zhàn)——貴州茅臺、五糧液多個(gè)上市公式年報(bào)批量解析——以五糧液等公司為例:最終,所有提取并保存的文件將被放在指定的文件夾內(nèi),如圖所示。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:上市公司的經(jīng)營數(shù)據(jù)對專業(yè)投資者而言通常具有較高的關(guān)注價(jià)值,因?yàn)橄噍^于財(cái)務(wù)數(shù)據(jù),經(jīng)營數(shù)據(jù)更難于人為操縱,能夠提供財(cái)報(bào)之外的更多信息。以A股上市公司“新天綠能”為例,該公司每月都會公布上一個(gè)月的經(jīng)營數(shù)據(jù)。這些數(shù)據(jù)在巨潮資訊網(wǎng)及公司官網(wǎng)上以PDF格式發(fā)布。利用Python自動化解析這些PDF文件,并整理其經(jīng)營業(yè)務(wù)數(shù)據(jù),是一種高效的數(shù)據(jù)處理方式。圖3-15和圖3-16展示了該公司2021年1月份的經(jīng)營數(shù)據(jù)披露情況,其主要收入來源包括風(fēng)電、太陽能(光伏)和天然氣三大板塊。爬取這些數(shù)據(jù)并自動整理到Excel中,可以為進(jìn)一步的分析和決策提供便利。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:按照以下逐步的方法,可以將經(jīng)營報(bào)告中的分散數(shù)據(jù)提取出來,并轉(zhuǎn)化為具有高可讀性的圖表。首先,需從經(jīng)營報(bào)告中提取所有表格(源代碼文件夾下給出了該P(yáng)DF文件),并將這些數(shù)據(jù)輸出為一份Excel文件。此過程涉及的知識點(diǎn)在3.2.2節(jié)中有詳細(xì)說明。需使用pdfplumber庫打開PDF文件,并調(diào)用pages方法以獲取每一頁的內(nèi)容,代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:在接下來的部分,將采用不同的方法,因?yàn)橛^察到報(bào)告包含很多頁內(nèi)容,例如此處展示的兩頁。首要任務(wù)是將所有的表格匯總至單一列表中。具體操作為,首先創(chuàng)建一個(gè)空列表,隨后逐頁遍歷,利用extract_tables方法將解析得到的每個(gè)表格添加至結(jié)果列表。在3.2.3節(jié)中提及,pdfplumber解析得到的表格以列表形式呈現(xiàn),即一個(gè)表格由多個(gè)列表構(gòu)成。因此,當(dāng)前的tables列表具有三層結(jié)構(gòu):第一層代表頁數(shù),第二層代表相應(yīng)頁的表格數(shù)量,第三層則為每個(gè)表格的具體內(nèi)容列表。例如,tables[1][0][1]表示第二頁第一個(gè)表格的第2行數(shù)據(jù)。然而,這種多層次結(jié)構(gòu)不利于生成統(tǒng)一格式的表格,故需要首先對列表內(nèi)容進(jìn)行“攤平”處理。代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:首先,創(chuàng)建一個(gè)列表以存儲解析結(jié)果。接下來,對于表格數(shù)據(jù)的三層結(jié)構(gòu),需要逐層進(jìn)行遍歷。在達(dá)到第三層時(shí),實(shí)際上是將每一行的內(nèi)容添加到結(jié)果列表中。這一過程的理解可能稍顯復(fù)雜,建議讀者在此步驟中密切觀察tables列表,以助于加深理解。代碼如下:接下來的步驟涉及將數(shù)據(jù)常規(guī)地轉(zhuǎn)換為DataFrame格式。考慮到轉(zhuǎn)換后得到的DataFrame可能會出現(xiàn)列名和行名未對齊的情況,因此需要進(jìn)行進(jìn)一步的調(diào)整以確保數(shù)據(jù)的準(zhǔn)確性和可讀性,相應(yīng)代碼如下。為了更好地理解這一過程,建議讀者親自運(yùn)行代碼直至該步驟,并觀察DataFramedf的結(jié)構(gòu)。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能單份經(jīng)營報(bào)告表格解析——以新天綠能為例:最終,將DataFrame的內(nèi)容打印出來,如圖所示。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能多份經(jīng)營報(bào)告表格批量解析:掌握單份報(bào)告的解析方法后,便能夠通過遍歷方法高效地批量解析多份報(bào)告中的表格。在這一過程中,關(guān)鍵在于結(jié)果的輸出方式。目標(biāo)是將這些表格保存在同一文件中,作為不同的表格。如果對每份表格都單獨(dú)使用to_excel方法,可能會導(dǎo)致文件內(nèi)容被覆蓋,最終僅保留最后處理的表格,例如7月的數(shù)據(jù)。為避免這一問題,可以采用openpyxl庫提供的方法。值得一提的是,openpyxl是Python中用于處理Excel文件讀寫的一個(gè)高效工具,值得學(xué)習(xí)。在作者的其他著作中,將對openpyxl庫進(jìn)行更深入的介紹。相應(yīng)的代碼如下:接下來開始遍歷,由于文件名具有高度相似性,只有3月和6月是季度性文件,僅需通過if語句塊進(jìn)行簡單的區(qū)分。在處理過程中,可以參考3.4.1節(jié)中描述的單份報(bào)告解析過程,此處不再贅述。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能多份經(jīng)營報(bào)告表格批量解析:在最終保存數(shù)據(jù)時(shí),應(yīng)將每個(gè)月的數(shù)據(jù)寫入Excel文件的一個(gè)獨(dú)立工作表中,并以月份命名工作表。例如,使用writer.save()將數(shù)據(jù)寫入相應(yīng)的工作表,并保存Excel文件。代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能多份經(jīng)營報(bào)告表格批量解析:完成保存后,打開生成的Excel文件,如圖所示。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能拼接整理多份表格:在提取并保存每個(gè)月的表格數(shù)據(jù)之后,下一步是將各個(gè)業(yè)務(wù)板塊的總和數(shù)據(jù)按時(shí)間序列進(jìn)行整理和統(tǒng)計(jì),以生成一張匯總表,這樣能夠清晰地展示公司每個(gè)月數(shù)據(jù)的變化趨勢。在進(jìn)行這一步驟時(shí),需注意使用openpyxl庫的load_workbook方法,以確保在最終保存過程中不會丟失之前得到的結(jié)果,相應(yīng)代碼如下。代碼的第6行應(yīng)首先初始化生成用于存放匯總結(jié)果的表格,為后續(xù)的數(shù)據(jù)整理和分析打下基礎(chǔ)。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能拼接整理多份表格:在繼續(xù)處理數(shù)據(jù)的過程中,需要對每張表格進(jìn)行逐一遍歷。由于在之前保存時(shí)已經(jīng)按照月份命名,因此可以方便地通過遍歷調(diào)取每張表格,代碼如下。從第3行至第6行,將對單個(gè)表格的索引進(jìn)行規(guī)范化處理。這一步驟的必要性在于,后續(xù)操作需要利用索引進(jìn)行精確定位,而直接讀取得到的索引可能存在左右空格,例如“風(fēng)電業(yè)務(wù)”。為此,首先初始化一個(gè)索引列表,然后遍歷現(xiàn)有的所有索引項(xiàng),對每個(gè)索引項(xiàng)執(zhí)行strip操作以去除空格,并將處理后的索引項(xiàng)加入到索引列表。最終,重新定義表格的索引,以確保數(shù)據(jù)的準(zhǔn)確性和一致性。3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能拼接整理多份表格:接下來在進(jìn)行數(shù)據(jù)提取的過程中,需要特別關(guān)注3月和6月的數(shù)據(jù),因?yàn)檫@兩個(gè)月份提供的是季度總和值。因此,在計(jì)算這兩個(gè)月份的具體數(shù)值時(shí),應(yīng)使用表格對應(yīng)位置的數(shù)值減去前兩個(gè)月的數(shù)值,以得到準(zhǔn)確的月度數(shù)據(jù)。此外,3月和6月的數(shù)據(jù)提取還存在另一處特殊性。這兩個(gè)月份會額外包含一張上網(wǎng)電量表,該表位于發(fā)電量表和天然氣表之間。通過使用loc方法進(jìn)行定位后,可能會發(fā)現(xiàn)存在兩行標(biāo)記為“太陽能業(yè)務(wù)”的數(shù)據(jù)。在這種情況下,需要進(jìn)一步使用iloc方法選取其中的第1行數(shù)據(jù),即代表了關(guān)注的發(fā)電量數(shù)據(jù)。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能拼接整理多份表格:對于其他月份的數(shù)據(jù)提取,邏輯相對簡單。首先,利用loc方法根據(jù)索引名定位到相應(yīng)的行,然后按照列表的順序直接提取數(shù)據(jù)。在解析過程中,需要注意的是,此時(shí)解析得到的表中的數(shù)據(jù)通常以字符串形式存在。為了進(jìn)行計(jì)算,必須將這些字符串轉(zhuǎn)換為浮點(diǎn)數(shù),這可以通過使用float方法實(shí)現(xiàn)。此外,天然氣數(shù)據(jù)的處理存在一些特殊性。觀察不同月份天然氣數(shù)據(jù)可以發(fā)現(xiàn),3月、6月和7月的數(shù)據(jù)位于第一列,而其他月份的數(shù)據(jù)則位于第二列。因此,在提取數(shù)據(jù)時(shí),需要使用try...except...代碼塊進(jìn)行異常處理。如果try代碼塊中的float轉(zhuǎn)換失敗(這通常發(fā)生在該位置無內(nèi)容而無法轉(zhuǎn)換為浮點(diǎn)數(shù)時(shí)),則執(zhí)行except代碼塊中的代碼。這種異常處理機(jī)制確保了數(shù)據(jù)處理的穩(wěn)健性,即使在數(shù)據(jù)格式存在差異的情況下,也能夠正確地提取所需信息。相應(yīng)的代碼如下:3.4PDF表格數(shù)據(jù)解析實(shí)戰(zhàn)——新天綠能拼接整理多份表格:接下來需要計(jì)算風(fēng)電和太陽能的總發(fā)電量。由于之前已經(jīng)將數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù),因此在計(jì)算過程中無需再次進(jìn)行轉(zhuǎn)換,代碼如下:在遍歷并處理完所有單個(gè)表格后,使用writer.save()方法保存Excel文件,代碼如下:再次打開保存后的Excel文件,可以發(fā)現(xiàn)在原有的按月份統(tǒng)計(jì)的單個(gè)工作表之后,新增了一個(gè)按業(yè)務(wù)和月份排序的匯總工作表,如圖所示。通過這個(gè)匯總表,可以清晰地觀察到各項(xiàng)業(yè)務(wù)數(shù)據(jù)隨時(shí)間的變化趨勢。3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:jieba庫的安裝在進(jìn)行文本大數(shù)據(jù)分詞之前,必須先安裝中文分詞庫——jieba庫。該庫可以通過pip安裝法進(jìn)行安裝。以Windows系統(tǒng)為例,用戶可以通過按下“Win+R”快捷鍵來調(diào)出運(yùn)行框,輸入“cmd”并回車,在隨后彈出的命令行窗口中輸入命令“pipinstalljieba”來完成安裝。若遇到安裝失敗的情況,可以嘗試使用清華鏡像的pip安裝方法。安裝完成后,即可使用jieba庫進(jìn)行文本的分詞操作。首先需要導(dǎo)入jieba庫,這通常通過一行代碼實(shí)現(xiàn)。緊接著,使用jieba庫中的cut()函數(shù)對指定的文本內(nèi)容進(jìn)行分詞處理,并將分詞結(jié)果存儲于變量word中。隨后,通過for循環(huán)遍歷word中的分詞結(jié)果,并將其打印輸出。代碼如下:打印輸出的分詞結(jié)果如下所示:3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:讀取文本內(nèi)容,并進(jìn)行分詞圖3-20展示了2017年的信托行業(yè)年度報(bào)告,該報(bào)告大約包含20萬字。對于業(yè)務(wù)分析人員而言,關(guān)注點(diǎn)往往在于這20萬字中哪些內(nèi)容更為重要。一種簡單的方法是識別出現(xiàn)頻率最高的詞匯,因此這些詞匯所對應(yīng)的內(nèi)容可能具有更高的關(guān)注度和重要性。實(shí)現(xiàn)這一功能,需要先對文本進(jìn)行中文分詞,隨后進(jìn)行詞頻統(tǒng)計(jì)。以下代碼示例展示了如何對一個(gè)文本文件進(jìn)行分詞:3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:讀取文本內(nèi)容,并進(jìn)行分詞需要注意的是,cut()函數(shù)返回的words不是一個(gè)列表,而是一個(gè)迭代器。迭代器與列表在功能上相似,但可以被視為一種“隱身的列表”。由于迭代器的特性,不能直接通過print(words)來輸出其內(nèi)容,而應(yīng)該使用for循環(huán)來遍歷迭代器中的元素,如下所示:此時(shí)的結(jié)果如圖3-21所示。3.5文檔主題可視化技術(shù)中文大數(shù)據(jù)分詞技巧:提取分詞后的四字詞以提取大于或等于四個(gè)字的詞匯為例說明如何按特定的要求獲取詞匯,代碼如下:首先,創(chuàng)建一個(gè)名為report_words的列表。隨后,遍歷words中的每個(gè)元素,若元素的詞匯長度達(dá)到或超過四個(gè)字,則將其添加到report_words列表中。完成篩選后,將該列表中的詞匯打印輸出,其結(jié)果如圖所示。3.5文檔主題可視化技術(shù)詞頻統(tǒng)計(jì)技巧:統(tǒng)計(jì)高頻詞匯的詞頻是一個(gè)相對直接的過程,可以通過使用collections模塊中的Counter類來實(shí)現(xiàn),代碼如下:執(zhí)行上述代碼將打印輸出report_words列表中每個(gè)詞匯的頻次。若需要查看出現(xiàn)頻次最多的前50名詞匯,可以使用Counter對象的most_common()函數(shù)來獲取高頻詞及其出現(xiàn)次數(shù),代碼如下:下圖展示了將result打印出來的運(yùn)行效果。3.5文檔主題可視化技術(shù)詞云圖繪制:詞云圖初步繪制在繪制詞云圖之前,首先需要引入相關(guān)的庫,代碼如下:引入相關(guān)庫后,可以通過如下代碼繪制詞云圖:3.5文檔主題可視化技術(shù)詞云圖繪制:詞云圖初步繪制3.5文檔主題可視化技術(shù)詞云圖繪制:繪制特定形狀的詞云圖當(dāng)前展示的詞云圖在美觀度上尚有提升空間。接下來將介紹生成具有特定形狀的詞云圖的方法,首先介紹所需相關(guān)庫的引入,相應(yīng)的代碼如下:引入所需庫之后,即可開始繪制具有指定形狀的詞云圖,代碼如下:3.5文檔主題可視化技術(shù)詞云圖繪制:繪制特定形狀的詞云圖生成的最終結(jié)果如圖所示。此時(shí),已形成微博logo的輪廓,但顏色尚未進(jìn)行自定義設(shè)置,仍保持默認(rèn)顏色。3.5文檔主題可視化技術(shù)詞云圖繪制:繪制具有特定形狀和顏色的詞云圖本節(jié)將介紹在生成特定形狀的基礎(chǔ)上,如何進(jìn)一步為詞云圖添加特定顏色。首先,需要引入必要的庫,代碼如下:完成庫的引入后,即可開始繪制具有指定顏色的詞云圖。在之前的代碼基礎(chǔ)上,添加以下代碼段:3.5文檔主題可視化技術(shù)詞云圖繪制:繪制具有特定形狀和顏色的詞云圖最終生成的詞云圖如圖所示,此時(shí)詞云圖不僅具有特定的形狀,還融入了微博logo的標(biāo)致性顏色。3.5文檔主題可視化技術(shù)補(bǔ)充知識點(diǎn):詞性標(biāo)注:詞性(part-of-speech)是詞匯基本的語法范疇,亦稱為詞類,其主要功能在于描述一個(gè)詞在具體語境中的語法作用。例如,用來指稱一個(gè)概念的詞通常為名詞,而用來指代前文提到的名詞的詞則為代詞。由于一個(gè)詞可能對應(yīng)多種詞性,因此準(zhǔn)確地為每個(gè)詞標(biāo)注詞性是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。例如,在句子“中國開始對計(jì)劃經(jīng)濟(jì)體制進(jìn)行改革”中,“改革”作為動詞使用,而在“醫(yī)藥衛(wèi)生改革中的經(jīng)濟(jì)問題”中則作為名詞使用。將此問題抽象化,即在已知單詞序列的基礎(chǔ)上,為每個(gè)單詞標(biāo)注相應(yīng)的詞性。詞性標(biāo)注是自然語言處理領(lǐng)域中的一項(xiàng)基礎(chǔ)且重要的工作。jieba庫提供了詞性標(biāo)注功能,可以直接調(diào)用。以下代碼是一個(gè)示例:3.5文檔主題可視化技術(shù)補(bǔ)充知識點(diǎn):詞性標(biāo)注:Jieb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教師職稱考試(特殊教育)歷年參考題庫含答案詳解
- 2025康復(fù)醫(yī)學(xué)科三基考試題庫及答案
- 2025年安全生產(chǎn)事故案例分析及事故處理流程培訓(xùn)試卷及答案
- 消防安全工作自查報(bào)告
- 2025年安全生產(chǎn)月電氣測試試題及答案
- 工業(yè)機(jī)器人系統(tǒng)操作員(三級)職業(yè)鑒定理論考試題及答案(新版)
- 2025年人工智能應(yīng)用技術(shù)考試試卷及答案
- 建設(shè)工程施工合同糾紛要素式起訴狀模板要素清晰無混淆
- 2026年動物園管理提升
- 2026 年無子女離婚協(xié)議書正規(guī)模板
- JGJ256-2011 鋼筋錨固板應(yīng)用技術(shù)規(guī)程
- 上海建橋?qū)W院簡介招生宣傳
- 《智慧教育黑板技術(shù)規(guī)范》
- 《電力建設(shè)安全工作規(guī)程》-第1部分火力發(fā)電廠
- 歌曲《我會等》歌詞
- 八年級物理上冊期末測試試卷-附帶答案
- 小學(xué)英語五年級上冊Unit 5 Part B Let's talk 教學(xué)設(shè)計(jì)
- 老年癡呆科普課件整理
- 學(xué)生校服供應(yīng)服務(wù)實(shí)施方案
- GB/T 22900-2022科學(xué)技術(shù)研究項(xiàng)目評價(jià)通則
- 自動控制系統(tǒng)的類型和組成
評論
0/150
提交評論