1、用xlrd讀取
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、永豐網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為永豐等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
對(duì)應(yīng)方法如下,需要先import xlrd和numpy,通過row_start和row_end控制行數(shù),通過column_start和column_end控制列數(shù)
這里要注意python是0-based索引,excel看的時(shí)候是1-based的索引
2、用pandas下的read_excel函數(shù)
dframe = pd.read_excel(“file_name.xlsx”)
dframe = pd.read_excel(“file_name.xlsx”, sheetname=”Sheet_name”)
dframe = pd.read_excel(“file_name.xlsx”, sheetname=number)
讀取表格的方式有兩種:
1、xlsread
[~,MeaDef,~]=xlsread(xls_site,table_tag,'B12:AI12');
這里輸出是一個(gè)對(duì)應(yīng)數(shù)字,一個(gè)對(duì)應(yīng)字符串,一個(gè)是用元胞把所有數(shù)據(jù)放在一起
對(duì)應(yīng)的xlswrite格式:
xlswrite(xls_site_output,train,1,['A',num2str(ix+1),':M',num2str(ix+1)])
2、read_table
用python讀取excel中的一列數(shù)據(jù)步驟如下:
1、首先打開dos命令窗,安裝必須的兩個(gè)庫,命令是:pip3 install?xlrd;Pip3 install xlwt。
2、準(zhǔn)備好excel。
3、打開pycharm,新建一個(gè)excel.py的文件,首先導(dǎo)入支持庫import xlrdimport xlwt。
4、要操作excel,首先得打開excel,使用open_workbook(‘路徑’),要獲取行與列,使用nrows(行),ncols(列),獲取具體的值,使用cell(row,col).value。
5、要在excel里寫入值,就要使用write屬性,重點(diǎn)說明寫入是用到xlwt這個(gè)支援庫,思路是先新建excel,然后新建頁簽B,然后將一組數(shù)據(jù)寫入到B,最后保存為excel.xls。
1、首先打開excel表格,在單元格中輸入兩列數(shù)據(jù),需要將這兩列數(shù)據(jù)進(jìn)行比對(duì)相同數(shù)據(jù)。
2、然后在C1單元格中輸入公式:=VLOOKUP(B1,A:A,1,0),意思是比對(duì)B1單元格中A列中是否有相同數(shù)據(jù)。
3、點(diǎn)擊回車,即可將公式的計(jì)算結(jié)果顯示出來,可以看到C1中顯示的是B1在A列中找到的相同數(shù)據(jù)。
4、將公式向下填充,即可發(fā)現(xiàn)C列中顯示出的數(shù)字即為有相同數(shù)據(jù)的,顯示“#N/A”的為沒有找到匹配數(shù)據(jù)的。
5、將C1-C4中的數(shù)據(jù)進(jìn)行復(fù)制并粘貼成數(shù)值,即可完成相同數(shù)據(jù)的提取操作。
在實(shí)際研究中,我們經(jīng)常需要獲取大量數(shù)據(jù),而這些數(shù)據(jù)很大一部分以pdf表格的形式呈現(xiàn),如公司年報(bào)、發(fā)行上市公告等。面對(duì)如此多的數(shù)據(jù)表格,采用手工復(fù)制黏貼的方式顯然并不可取。那么如何才能高效提取出pdf文件中的表格數(shù)據(jù)呢?
Python提供了許多可用于pdf表格識(shí)別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對(duì)規(guī)范的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。
作為一個(gè)強(qiáng)大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉(zhuǎn)換為易于處理的txt文檔,并輸出pdf文檔的字符、頁面、頁碼等信息,還可進(jìn)行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:
pip install pdfplumber
pdfplumber庫提供了兩種pdf表格提取函數(shù),分別為.extract_tables( )及.extract_table( ),兩種函數(shù)提取結(jié)果存在差異。為進(jìn)行演示,我們網(wǎng)站上下載了一份短期融資券主體信用評(píng)級(jí)報(bào)告,為pdf格式。任意選取某一表格,其界面如下:
接下來,我們簡要分析兩種提取模式下的結(jié)果差異。
(1).extract_tables( )
可輸出頁面中所有表格,并返回一個(gè)嵌套列表,其結(jié)構(gòu)層次為table→row→cell。此時(shí),頁面上的整個(gè)表格被放入一個(gè)大列表中,原表格中的各行組成該大列表中的各個(gè)子列表。若需輸出單個(gè)外層列表元素,得到的便是由原表格同一行元素構(gòu)成的列表。例如,我們執(zhí)行如下程序:
輸出結(jié)果:
(2).extract_table( )
返回多個(gè)獨(dú)立列表,其結(jié)構(gòu)層次為row→cell。若頁面中存在多個(gè)行數(shù)相同的表格,則默認(rèn)輸出頂部表格;否則,僅輸出行數(shù)最多的一個(gè)表格。此時(shí),表格的每一行都作為一個(gè)單獨(dú)的列表,列表中每個(gè)元素即為原表格的各個(gè)單元格內(nèi)容。若需輸出某個(gè)元素,得到的便是具體的數(shù)值或字符串。如下:
輸出結(jié)果:
在此基礎(chǔ)上,我們?cè)敿?xì)介紹如何從pdf文件中提取表格數(shù)據(jù)。其中一種思路便是將提取出的列表視為一個(gè)字符串,結(jié)合Python的正則表達(dá)式re模塊進(jìn)行字符串處理后,將其保存為以標(biāo)準(zhǔn)英文逗號(hào)分隔、可被Excel識(shí)別的csv格式文件,即進(jìn)行如下操作:
輸出結(jié)果:
盡管能獲得完整的表格數(shù)據(jù),但這種方法相對(duì)不易理解,且在處理結(jié)構(gòu)不規(guī)則的表格時(shí)容易出錯(cuò)。由于通過pdfplumber庫提取出的表格數(shù)據(jù)為整齊的列表結(jié)構(gòu),且含有數(shù)字、字符串等數(shù)據(jù)類型。因此,我們可調(diào)用pandas庫下的DataFrame( )函數(shù),將列表轉(zhuǎn)換為可直接輸出至Excel的DataFrame數(shù)據(jù)結(jié)構(gòu)。DataFrame的基本構(gòu)造函數(shù)如下:
DataFrame([data,index, columns])
三個(gè)參數(shù)data、index和columns分別代表創(chuàng)建對(duì)象、行索引和列索引。DataFrame類型可由二維ndarray對(duì)象、列表、字典、元組等創(chuàng)建。本推文中的data即指整個(gè)pdf表格,提取程序如下:
其中,table[1:]表示選定整個(gè)表格進(jìn)行DataFrame對(duì)象創(chuàng)建,columns=table[0]表示將表格第一行元素作為列變量名,且不創(chuàng)建行索引。輸出Excel表格如下:
通過以上簡單程序,我們便提取出了完整的pdf表格。但需注意的是,面對(duì)不規(guī)則的表格數(shù)據(jù)提取,創(chuàng)建DataFrame對(duì)象的方法依然可能出錯(cuò),在實(shí)際操作中還需進(jìn)行核對(duì)。
關(guān)于我們
微信公眾號(hào)“爬蟲俱樂部”分享實(shí)用的stata命令,歡迎轉(zhuǎn)載、打賞。爬蟲俱樂部是由李春濤教授領(lǐng)導(dǎo)下的研究生及本科生組成的大數(shù)據(jù)分析和數(shù)據(jù)挖掘團(tuán)隊(duì)。
投稿要求:
1)必須原創(chuàng),禁止抄襲;
2)必須準(zhǔn)確,詳細(xì),有例子,有截圖;
用openpyxl模塊讀取excel中的公式結(jié)果。代碼如下:
import?openpyxl
wb=?openpyxl.load_workbook('sogou.xlsx',data_only=True)
VLOOKUP是一個(gè)查找函數(shù),給定一個(gè)查找的目標(biāo),它就能從指定的查找區(qū)域中查找返回想要查找到的值。它的基本語法為:
VLOOKUP(查找目標(biāo),查找范圍,返回值的列數(shù),精確OR模糊查找)
下面以一個(gè)實(shí)例來介紹一下這四個(gè)參數(shù)的使用
例1:如下圖所示,要求根據(jù)表二中的姓名,查找姓名所對(duì)應(yīng)的年齡。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
參數(shù)說明:
1 查找目標(biāo):就是你指定的查找的內(nèi)容或單元格引用。本例中表二A列的姓名就是查找目標(biāo)。我們要根據(jù)表二的“姓名”在表一中A列進(jìn)行查找。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
2 查找范圍(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目標(biāo),如果沒有說從哪里查找,EXCEL肯定會(huì)很為難。所以下一步我們就要指定從哪個(gè)范圍中進(jìn)行查找。VLOOKUP的這第二個(gè)參數(shù)可以從一個(gè)單元格區(qū)域中查找,也可以從一個(gè)常量數(shù)組或內(nèi)存數(shù)組中查找。本例中要從表一中進(jìn)行查找,那么范圍我們要怎么指定呢?這里也是極易出錯(cuò)的地方。大家一定要注意,給定的第二個(gè)參數(shù)查找范圍要符合以下條件才不會(huì)出錯(cuò):
A 查找目標(biāo)一定要在該區(qū)域的第一列。本例中查找表二的姓名,那么姓名所對(duì)應(yīng)的表一的姓名列,那么表一的姓名列(列)一定要是查找區(qū)域的第一列。象本例中,給定的區(qū)域要從第二列開始,即$B$2:$D$8,而不能是$A$2:$D$8。因?yàn)椴檎业摹靶彰辈辉?A$2:$D$8區(qū)域的第一列。
B 該區(qū)域中一定要包含要返回值所在的列,本例中要返回的值是年齡。年齡列(表一的D列)一定要包括在這個(gè)范圍內(nèi),即:$B$2:$D$8,如果寫成$B$2:$C$8就是錯(cuò)的。
3 返回值的列數(shù)(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。這是VLOOKUP第3個(gè)參數(shù)。它是一個(gè)整數(shù)值。它怎么得來的呢。它是“返回值”在第二個(gè)參數(shù)給定的區(qū)域中的列數(shù)。本例中我們要返回的是“年齡”,它是第二個(gè)參數(shù)查找范圍$B$2:$D$8的第3列。這里一定要注意,列數(shù)不是在工作表中的列數(shù)(不是第4列),而是在查找范圍區(qū)域的第幾列。如果本例中要是查找姓名所對(duì)應(yīng)的性別,第3個(gè)參數(shù)的值應(yīng)該設(shè)置為多少呢。答案是2。因?yàn)樾詣e在$B$2:$D$8的第2列中。
4 精確OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一個(gè)參數(shù)是決定函數(shù)精確和模糊查找的關(guān)鍵。精確即完全一樣,模糊即包含的意思。第4個(gè)參數(shù)如果指定值是0或FALSE就表示精確查找,而值為1 或TRUE時(shí)則表示模糊。這里蘭色提醒大家切記切記,在使用VLOOKUP時(shí)千萬不要把這個(gè)參數(shù)給漏掉了,如果缺少這個(gè)參數(shù)默為值為模糊查找,我們就無法精確查找到結(jié)果了。
1、接下來,我們的任務(wù)是通過利用VLOOKUP函數(shù)來實(shí)現(xiàn)查找同學(xué)C的成績。為此在單元格中輸入“=VLOOKUP”,此時(shí)就會(huì)發(fā)現(xiàn)VLOOKUP包括三個(gè)參數(shù)和一個(gè)可選參數(shù)。
其中“l(fā)ookup_value”是指要查找的值。
參數(shù)“table_array”是指搜索的區(qū)域,在此在除標(biāo)題之后的整個(gè)數(shù)據(jù)區(qū)域。
第三個(gè)參數(shù)“col_index_num”是指整個(gè)函數(shù)返回單元格所在的列號(hào)。
2、最后以右括號(hào)結(jié)尾,并按回車鍵,就出現(xiàn)想要的結(jié)果啦。
文章題目:python讀取表格函數(shù),python怎么讀取表格中的數(shù)據(jù)
網(wǎng)頁路徑:http://jinyejixie.com/article48/hsihep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)、虛擬主機(jī)、全網(wǎng)營銷推廣、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)