99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)大數(shù)據(jù)時(shí)代你知道如何用python來(lái)處理EXCEL表格嗎?
你知道如何用python來(lái)處理EXCEL表格嗎?
2020-07-27
收藏

大家在工作和生活中經(jīng)常會(huì)遇到處理EXCEL表格的時(shí)候,例如將一個(gè)EXCEL表格中的內(nèi)容處理之后復(fù)制到另外一個(gè)EXCEL表格之中,或者大批量處理EXCEL,無(wú)論是哪種情況,如果我們不借助工具,自己一條條去處理的話,估計(jì)要耗費(fèi)不少的時(shí)間和經(jīng)歷。今天小編就教大家如何用python處理EXCEL,希望能幫助大家提高效率。

今天處理EXCEL需要用到python的第三方庫(kù):openpyxl。

pip install openpyxl安裝。

下面來(lái)看一下具體步驟:

一、獲取EXCEL

1、讀取Excel文件

首先導(dǎo)入相關(guān)函數(shù)

from openpyxl import load_workbook

# 默認(rèn)可以讀寫,如果有需要可以指定

write_only和read_only為True

wb = load_workbook('pythontab.xlsx')

默認(rèn)打開(kāi)的文件為可讀寫,若有需要可以指定參數(shù)read_only為True。

2、獲取工作表--Sheet

# 獲得所有sheet的名稱

print(wb.get_sheet_names())

# 根據(jù)sheet名稱獲取sheet

a_sheet = wb.get_sheet_by_name('Sheet1')

# 獲取sheet名稱

print(a_sheet.title)

# 獲得當(dāng)前正在顯示的sheet, 也可以用

wb.get_active_sheet()

sheet = wb.active

3、獲取單元格

# 獲取某個(gè)單元格的值,觀察EXCEL發(fā)現(xiàn)也是先字母再數(shù)字的順序,也就是先列再行

b4 = sheet['B4']

# 分別返回

print(f'({b4.column}, {b4.row}) is {b4.value}') # 返回的數(shù)字就是int型

# 除了用下標(biāo)的方式獲取之外,還能使用cell函數(shù), 換成數(shù)字,這個(gè)表示B2

b4_too = sheet.cell(row=4. column=2)

print(b4_too.value)

4、獲取行和列

sheet.rows是生成器, 里面為每一行的數(shù)據(jù),每一行又被一個(gè)tuple包裹。

sheet.columns類似,但是里面的每個(gè)tuple是每一列的數(shù)據(jù)。

# 由于按行,因此返回順序?yàn)锳1. B1. C1

for row in sheet.rows:

for cell in row:

print(cell.value)

# A1. A2. A3這樣的順序

for column in sheet.columns:

for cell in column:

print(cell.value)

通過(guò)上述四步的代碼我們就能獲取所有單元格的數(shù)據(jù)。

二、將數(shù)據(jù)寫入Excel

1.工作表

首先導(dǎo)入WorkBook

from openpyxl import Workbook

wb = Workbook()

這樣,一個(gè)新的工作表就建好了,但是還沒(méi)被保存。

如果需要指定只寫模式,我們可以指定參數(shù)write_only=True。通常情況下,默認(rèn)的可寫可讀模式就行了。

print(wb.get_sheet_names()) # 提供一個(gè)默認(rèn)名稱為Sheet的工作表,如果是office2016新建提供默認(rèn)名稱為Sheet1的工作表

# 直接進(jìn)行賦值就能夠更改工作表的名稱

sheet.title = 'Sheet1'

# 新建一個(gè)工作表,我們可以指定索引,對(duì)其在工作簿中的位置進(jìn)行合理安排

wb.create_sheet('Data', index=1) # 被安排到第二個(gè)工作表,index=0代表第一個(gè)位置

# 刪除某個(gè)工作表

wb.remove(sheet)

del wb[sheet]

2.寫入單元格

還能使用公式

# 直接給單元格賦值即可

sheet['A1'] = 'good'

# B9處寫入平均值

sheet['B9'] = '=AVERAGE(B2:B8)'

注意:若是讀取的時(shí)候,則需要加上data_only=True,這樣讀到B9返回的就是數(shù)字,假如不加這個(gè)參數(shù),返回的就會(huì)是公式本身'=AVERAGE(B2:B8)'

3.append函數(shù)

能夠一次性添加多行數(shù)據(jù),從第一行空白行開(kāi)始寫入。

# 添加一行

row = [1 ,2. 3. 4. 5]

sheet.append(row)

# 添加多行

rows = [

['Number', 'data1', 'data2'],

[2. 40. 30],

[3. 40. 25],

[4. 50. 30],

[5. 30. 10],

[6. 25. 5],

[7. 50. 10],

]

注意:append函數(shù)只能按行寫入。

4.zip()函數(shù)

使用zip我們能夠按列寫入數(shù)據(jù)

list(zip(*rows))

# out

[('Number', 2. 3. 4. 5. 6. 7),

('data1', 40. 40. 50. 30. 25. 50),

('data2', 30. 25. 30. 10. 5. 10)]

說(shuō)明一下:

list(zip(*rows)),首先*rows將列表打散,也可以說(shuō)是填入了若干個(gè)參數(shù),zip從每一個(gè)列表中提取第1個(gè)值并將其組合成一個(gè)tuple,再?gòu)拿恳粋€(gè)列表中提取第2個(gè)值,再組合成一個(gè)tuple,一直到最短的那個(gè)列表的最后一個(gè)值提取完畢時(shí)結(jié)束,其他較長(zhǎng)列表的在這之后的值會(huì)被舍棄,也就相當(dāng)于,最后的元組個(gè)數(shù)是由原來(lái)每個(gè)參數(shù)(可迭代對(duì)象)的最短長(zhǎng)度決定的。例如:現(xiàn)在隨便刪掉一個(gè)值,最短列表長(zhǎng)度為2.那么data2那一列的值就會(huì)被全部舍棄。

rows = [

['Number', 'data1', 'data2'],

[2. 40],

[3. 40. 25],

[4. 50. 30],

[5. 30. 10],

[6. 25. 5],

[7. 50. 10],

]

# out

[('Number', 2. 3. 4. 5. 6. 7), ('data1', 40. 40. 50. 30. 25. 50)]

最后zip返回的是zip對(duì)象,需要再使用list轉(zhuǎn)換下。

以上就是小編今天跟大家分享的如何使用python處理EXCEL表格的基本操作,獲取EXCEL和寫入EXCEL,希望對(duì)于大家大批量處理EXCEL有所幫助。python是一款功能強(qiáng)大的數(shù)據(jù)分析工具,我們平時(shí)工作中的很多事項(xiàng)都可以用python來(lái)進(jìn)行處理。希望python能幫助大家從繁瑣的重復(fù)性工作中解脫粗來(lái)。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }