熱線電話:13121318867

登錄
首頁大數據時代你知道如何用python來處理EXCEL表格嗎?
你知道如何用python來處理EXCEL表格嗎?
2020-07-27
收藏

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

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

pip install openpyxl安裝。

下面來看一下具體步驟:

一、獲取EXCEL

1、讀取Excel文件

首先導入相關函數

from openpyxl import load_workbook

# 默認可以讀寫,如果有需要可以指定

write_only和read_only為True

wb = load_workbook('pythontab.xlsx')

默認打開的文件為可讀寫,若有需要可以指定參數read_only為True。

2、獲取工作表--Sheet

# 獲得所有sheet的名稱

print(wb.get_sheet_names())

# 根據sheet名稱獲取sheet

a_sheet = wb.get_sheet_by_name('Sheet1')

# 獲取sheet名稱

print(a_sheet.title)

# 獲得當前正在顯示的sheet, 也可以用

wb.get_active_sheet()

sheet = wb.active

3、獲取單元格

# 獲取某個單元格的值,觀察EXCEL發現也是先字母再數字的順序,也就是先列再行

b4 = sheet['B4']

# 分別返回

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

# 除了用下標的方式獲取之外,還能使用cell函數, 換成數字,這個表示B2

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

print(b4_too.value)

4、獲取行和列

sheet.rows是生成器, 里面為每一行的數據,每一行又被一個tuple包裹。

sheet.columns類似,但是里面的每個tuple是每一列的數據。

# 由于按行,因此返回順序為A1. 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)

通過上述四步的代碼我們就能獲取所有單元格的數據。

二、將數據寫入Excel

1.工作表

首先導入WorkBook

from openpyxl import Workbook

wb = Workbook()

這樣,一個新的工作表就建好了,但是還沒被保存。

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

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

# 直接進行賦值就能夠更改工作表的名稱

sheet.title = 'Sheet1'

# 新建一個工作表,我們可以指定索引,對其在工作簿中的位置進行合理安排

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

# 刪除某個工作表

wb.remove(sheet)

del wb[sheet]

2.寫入單元格

還能使用公式

# 直接給單元格賦值即可

sheet['A1'] = 'good'

# B9處寫入平均值

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

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

3.append函數

能夠一次性添加多行數據,從第一行空白行開始寫入。

# 添加一行

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函數只能按行寫入。

4.zip()函數

使用zip我們能夠按列寫入數據

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)]

說明一下:

list(zip(*rows)),首先*rows將列表打散,也可以說是填入了若干個參數,zip從每一個列表中提取第1個值并將其組合成一個tuple,再從每一個列表中提取第2個值,再組合成一個tuple,一直到最短的那個列表的最后一個值提取完畢時結束,其他較長列表的在這之后的值會被舍棄,也就相當于,最后的元組個數是由原來每個參數(可迭代對象)的最短長度決定的。例如:現在隨便刪掉一個值,最短列表長度為2.那么data2那一列的值就會被全部舍棄。

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對象,需要再使用list轉換下。

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

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢