国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

這篇具有很好參考價值的文章主要介紹了python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

?? ? ? ?最近需要讀取Excel中的內(nèi)容,然后進(jìn)行后續(xù)操作,對于這塊知識,博主以前以為自己不會涉及到,但是現(xiàn)在一涉及到,第一步就錯了,搞了好久。真的心累。因此寫了這篇博客。?

目的:excel中存放著數(shù)據(jù),如果要進(jìn)行計算及其它操作,首先就要進(jìn)行讀取。

目錄

安裝

初階?

進(jìn)階1

進(jìn)階2

進(jìn)階3

總結(jié)???????

我們先來看一下python中能操作Excel的庫對比(一共九個庫):

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

可以發(fā)現(xiàn),還是挺多的

這里使用的是xlrd庫。

安裝

這里首先就是導(dǎo)入這個包,

pip install xlrd==1.2.0

???????xlrd包版本最好是1.2.0,因為筆者使用2.多版本的xlrd時,代碼出現(xiàn)了類似下面的報錯,也就是說xlrd版本太高會導(dǎo)致無法支持讀取xlsx后綴的excel。

xlrd.biffh.XLRDError: Excel xlsx file; not supported

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

大家可以去試試將excel另存,看看保存類型。

目前筆者使用的是Excel2019版本的,默認(rèn)保存類型為xlsx。

如果你之前已經(jīng)安裝xlrd高版本或更低版本了,建議先卸載一下,重新安裝。

pip uninstall xlrd
pip install xlrd==1.2.0

實例

初階?

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

一個excel中有如上數(shù)據(jù),我們需要將其提取出來,方便python進(jìn)行后續(xù)操作。

代碼如下:

def extract1(file,index=0):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    all = []
    for i in range(rows):
        a = worksheet.row_values(i)[:]
        all.append(a)
    print(all)
    cc = np.array(all)
    print(cc)
    return cc

file是文件的路徑及名稱,index就是當(dāng)前sheet表的索引。 下圖就是具體的索引。

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

當(dāng)然也可以根據(jù)sheet表的名稱。

如下面代碼第一行按照的是索引方式,第二行按照的是sheet名稱。大家可自行選擇

    worksheet = workbook.sheet_by_index(0)
    worksheet = workbook.sheet_by_name("sheet1")

rows = worksheet.nrows

返回的是sheet表的行數(shù),ncols則是列數(shù)

    all = []
    for i in range(rows):
        a = worksheet.row_values(i)[:]
        all.append(a)

首先定義一個空列表,然后遍歷每行,將里面的數(shù)據(jù)寫入列表中,

row_values()

是用來返回給定行中單元格值的切片。?

最后將其轉(zhuǎn)換成數(shù)組類型即可。(按要求來,大家也可以不換)

下圖是結(jié)果:

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

換個高級的寫法,用推導(dǎo)式寫(濃縮才是精華)

def extract(file,index=0):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    c = tuple(worksheet.row_values(i)[:] for i in range(rows))
    a = np.array(c)
    print(a)
    return a

?代碼行數(shù)瞬間縮短了。

最好調(diào)用一下函數(shù)即可

file = r'C:\Users\knighthood\OneDrive\桌面\11.xlsx'
extract1(file)

進(jìn)階1

????????要求:假如我excel只要圖中框出來的區(qū)域。

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

以下為了看的較為簡便,我使用推導(dǎo)式的代碼

def confine_array(file,index=0):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    c = tuple(worksheet.row_values(i)[1:] for i in range(1, rows))
    a = np.array(c)
    print(a)
    return a

如上,可以發(fā)現(xiàn),代碼變化之處就下面這一行。

    c = tuple(worksheet.row_values(i)[1:] for i in range(1, rows))

一步步講解:

①for i in range(1, rows)

????????首先對于后面的for循環(huán),i控制的就是獲取的行,更改其范圍就會更改獲取到的行、行數(shù)。

如果是上面說的(1,rows),則對應(yīng)著獲取第二行到最后一行,(0表示第一行)

②worksheet.row_values(i)[1:]

????????最后的[1:](本來的代碼中是沒有或者是[:])表示的是i行的元素從第2列(個)獲取到最后一行(個)。

因此我們只需要更改這兩處就可以獲得不同的內(nèi)容矩陣(如下)。

def flexible_array(file,index=0,row=1,col=1):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    c = tuple(worksheet.row_values(i)[col:] for i in range(row,rows))
    a = np.array(c)
    print(a)
    return a

結(jié)果如下圖?

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

進(jìn)階2

????????要求:能不能更簡化一點(diǎn),根據(jù)我從哪個位置要數(shù)據(jù),如第二行第二列開始,將這后面的數(shù)據(jù)進(jìn)行讀取。每次這樣對來對去,容易出錯,還是根據(jù)行列開始計算比較方便。

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

這里為了防止行列一樣,我就多加了一列。

def flexible1_array(file,index=0,row=1,col=1):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    c = tuple(worksheet.row_values(i)[col-1:] for i in range(row-1,rows))
    a = np.array(c)
    print(a)
    return a

代碼也主要變化了這一行?

    c = tuple(worksheet.row_values(i)[col-1:] for i in range(row-1,rows))

這里筆者就不多解釋了。?

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組現(xiàn)在就可以根據(jù)需要的起始單元格所在的行列進(jìn)行選取所要的內(nèi)容。

進(jìn)階3

????????要求:不需要最后一列

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

這里的話,筆者就設(shè)置了最后需要的行和列作為結(jié)束的讀取。

def flexible2_array(file,index=0,row=1,col=1,end_row=None,end_col=None):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    if end_row is None:
        c = tuple(worksheet.row_values(i)[col-1:end_col] for i in range(row-1, rows))
    else:
        c = tuple(worksheet.row_values(i)[col - 1:end_col] for i in range(row - 1, end_row))
    a = np.array(c)
    print(a)
    return a

????????上述代碼意思是,如果不輸入結(jié)束的行和列,讀取到的是包含數(shù)據(jù)的行列,如果輸入了行和列(或者其中一個),就讀取相應(yīng)的內(nèi)容。由于end_row放在range()函數(shù)中,因此需要加個if判斷。

結(jié)果如下:

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

????????此外,我還發(fā)現(xiàn),end_col由于放在[]中,可輸入負(fù)數(shù)(不懂的可以去看看python列表負(fù)索引)。

不過這里的-1,其實際是排除了最后一列,從你輸入的行列到,你輸入的結(jié)束行和倒數(shù)第二列。

有些人可能會覺得別扭(比如我,更喜歡-1表示從起始列到最后一列,-2表示從起始列到倒數(shù)第二列)

def flexible3_array(file,index=0,row=1,col=1,end_row=None,end_col=None):
    workbook = xlrd.open_workbook(file)
    worksheet = workbook.sheet_by_index(index)
    rows = worksheet.nrows
    if end_row is None:
        c = tuple(worksheet.row_values(i)[col-1:end_col if end_col > 0 else end_col+1] for i in range(row-1, rows))
    else:
        c = tuple(worksheet.row_values(i)[col-1:end_col if end_col > 0 else end_col+1] for i in range(row - 1, end_row))
    a = np.array(c)
    print(a)
    return a

這里,代碼中將判斷end_col是否為負(fù),使用了if-else寫在一行。減少了很多代碼判斷量,使看起來更簡潔。?

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

這里看個人喜好是否使用這個方法。?

????????還有一個end_col參數(shù)使用負(fù)數(shù)的原因是,end_row由于在excel中對應(yīng)的是行,其用的是數(shù)字表示,而excel中列用字母表示,因此如果當(dāng)數(shù)據(jù)列數(shù)太多的時候(如下圖),去數(shù)列還是挺麻煩的

python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

總結(jié)

? ? ? ? 上述內(nèi)容是一步一步進(jìn)行修改添加的,對應(yīng)著平時要求的逐漸添加,功能的逐漸完善。

? ? ? ? 筆者在上篇構(gòu)建層次分析法,用到的數(shù)據(jù)矩陣,可以和這篇一起結(jié)合,通過excel讀取轉(zhuǎn)為數(shù)組,然后進(jìn)行層次分析法的操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-411036.html

到了這里,關(guān)于python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • EXCEL上傳指定行讀取數(shù)據(jù) 可直接使用

    前提:需要引入easyExcel 前置條件 entity 中文數(shù)字轉(zhuǎn)換器 1.繼承AnalysisEventListener 2.EXCEL文件讀取工具 3.excel文件上傳

    2024年02月12日
    瀏覽(25)
  • panda讀取excel文件內(nèi)容時出錯,提示excel表格不能被指定

    panda讀取excel文件內(nèi)容時出錯,提示excel表格不能被指定

    panda讀取excel文件內(nèi)容時出錯,提示exc表格不能被指定,詳細(xì)內(nèi)容如下: ? ? ?Excel file format cannot be determined, you must specify an engine manually. 源碼如下(panda包和xlrd包都已經(jīng)導(dǎo)入): 根據(jù)報錯內(nèi)容來到顯示報錯的代碼中 當(dāng)ext等于none時,提示這個錯誤。那么ext是怎么等于none的呢,

    2024年02月16日
    瀏覽(28)
  • 利用MATLAB讀取.nc文件單像元數(shù)值并轉(zhuǎn)為Excel格式(以中國日降雨量月均數(shù)據(jù)為例)

    利用MATLAB讀取.nc文件單像元數(shù)值并轉(zhuǎn)為Excel格式(以中國日降雨量月均數(shù)據(jù)為例)

    ?以中國日降雨量月均數(shù)據(jù)(nc文件包含12月)為例,提取某經(jīng)緯度下的多月份像元值。 (【數(shù)據(jù)分享】1960-2020年中國1公里分辨率月降水?dāng)?shù)據(jù)集) 一、確定經(jīng)緯度所在行列 號 以 92.18E,30.475N 為例,首先在Matlab中輸入以下代碼: 工作區(qū)獲取到lat、lon和pre的信息,打開lat和lon文件

    2024年02月07日
    瀏覽(49)
  • 如何使用Python將PDF轉(zhuǎn)為Excel

    如何使用Python將PDF轉(zhuǎn)為Excel

    PDF文件是一種靜態(tài)文檔格式,通常難以編輯,而Excel則是一個靈活的表格工具。如果你需要處理PDF表格中的數(shù)據(jù),那么將其導(dǎo)出為Excel文件可以大大節(jié)省工作時間和精力。Excel提供的強(qiáng)大數(shù)據(jù)編輯和格式化功能,允許你對轉(zhuǎn)換后的PDF數(shù)據(jù)進(jìn)行修改、排序、篩選、計算等操作。同

    2024年02月05日
    瀏覽(40)
  • Python實用技巧:將 Excel轉(zhuǎn)為PDF

    Python實用技巧:將 Excel轉(zhuǎn)為PDF

    將Excel文件轉(zhuǎn)換為PDF可以方便儲存表格數(shù)據(jù),此外在打印或共享文檔時也能確保表格樣式布局等在不同設(shè)備和操作系統(tǒng)上保持一致。今天給大家分享一個使用第三方Python庫Spire.XLS for Python 實現(xiàn)Excel轉(zhuǎn)PDF的簡單方法。 1. 首先,通過pip命令來安裝依賴庫; 2. 安裝完成后,導(dǎo)入所需

    2024年02月05日
    瀏覽(36)
  • Python處理xlsx文件(讀取、轉(zhuǎn)為列表、新建、寫入數(shù)據(jù)、保存)

    xlsxwriter**庫對于xslx表的列數(shù)不做限制, xlrd 庫不能寫入超過65535行,256列的數(shù)據(jù)。 由于需要處理的數(shù)據(jù)行列數(shù)較多,遇到報錯才發(fā)現(xiàn)庫的限制問題,記錄一下。

    2024年02月12日
    瀏覽(89)
  • python 讀取視頻有多少幀并將視頻轉(zhuǎn)為GIF動態(tài)圖

    目錄 1 python讀取視頻幀 2 python 將MP4格式視頻前500幀轉(zhuǎn)為動態(tài)圖 3 python 將MP4格式視頻第2688到2890幀轉(zhuǎn)為動態(tài)圖,并將gif圖片的七分之一列和后七分之一列裁掉 4 python 將MP4格式視頻第2688到2890幀轉(zhuǎn)為動態(tài)圖,并將gif圖片的七分之一行和后七分之一行裁掉 要讀取視頻有多少幀,可

    2024年02月11日
    瀏覽(18)
  • Python實現(xiàn)Word、Excel、PPT批量轉(zhuǎn)為PDF

    Python實現(xiàn)Word、Excel、PPT批量轉(zhuǎn)為PDF

    今天看見了一個有意思的腳本Python批量實現(xiàn)Word、EXCLE、PPT轉(zhuǎn)PDF文件。 因為我平時word用的比較的多,所以深有體會,具體怎么實現(xiàn)的我們就不討論了,因為這個去學(xué)了也沒什么提升,不然也不會當(dāng)作腳本了。這里我將其放入了pyzjr庫中,也方便大家進(jìn)行調(diào)用。 你可以去下載p

    2024年02月10日
    瀏覽(96)
  • opencv-python 將圖像迷宮轉(zhuǎn)為迷宮數(shù)組

    opencv-python 將圖像迷宮轉(zhuǎn)為迷宮數(shù)組

    起因是我想做個自動走迷宮的外掛(其實是想做點(diǎn)實踐),所以我需要在游戲中捕捉畫面并自動尋路,然后再控制自動移動,此為第一部分:捕捉畫面。 1.取得圖像迷宮 2.處理圖像 3.圖像分割 4.生成數(shù)組 首先我們得捕捉屏幕畫面,即獲得迷宮圖像,這里我是在steam上面找了一

    2024年02月07日
    瀏覽(39)
  • python + selenium實現(xiàn)巨潮資訊網(wǎng)指定范圍年報下載

    python + selenium實現(xiàn)巨潮資訊網(wǎng)指定范圍年報下載

    大家好!第一次寫文章,緊張滴捏! ?? 這段時間在做課設(shè),課設(shè)里需要下載滬市600000到601000號的年報原文做數(shù)字化的詞頻分析,想著用程序幫我批量下載一下,但是找了一下貌似沒有類似的代碼,就寫了一個應(yīng)用selenium庫來做模擬下載的python代碼。 寫的很爛,爬的很

    2024年02月05日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包