一文分享20個(gè)必學(xué)的Excel表格操作Python腳本
示例數(shù)據(jù) (bank_data.xlsx)
首先,我們創(chuàng)建一個(gè)示例的Excel文件bank_data.xlsx,并填充一些示例數(shù)據(jù)。
import pandas as pd
# 創(chuàng)建示例數(shù)據(jù)
data = {
'客戶(hù)ID': [1, 2, 3, 4, 5],
'姓名': ['張三', '李四', '王五', '趙六', '孫七'],
'聯(lián)系方式': ['13800000000', '13900000000', '13700000000', '13600000000', '13500000000'],
'賬戶(hù)余額': [10000.0, 20000.0, 15000.0, 30000.0, 25000.0],
'貸款類(lèi)型': ['信用貸款', '房貸', '信用貸款', '車(chē)貸', '信用貸款'],
'貸款金額': [50000.0, 300000.0, 60000.0, 100000.0, 70000.0],
'利率': [5.0, 4.5, 5.2, 4.8, 5.1],
'貸款期限(年)': [3, 20, 4, 5, 3]}
# 保存到Excel文件
df = pd.DataFrame(data)
df.to_excel('bank_data.xlsx', index=False)
請(qǐng)先運(yùn)行上面的代碼以生成示例數(shù)據(jù)文件bank_data.xlsx。
1. 讀取Excel文件
- 使用場(chǎng)景:從Excel中加載數(shù)據(jù)進(jìn)行后續(xù)處理。
- 代碼解釋?zhuān)菏褂胮andas.read_excel函數(shù)讀取Excel文件。
示例代碼:
import pandas as pd
# 讀取Excel文件
df = pd.read_excel('bank_data.xlsx')
print(df.head())
2. 寫(xiě)入Excel文件
- 使用場(chǎng)景:將處理后的數(shù)據(jù)保存到新的Excel文件。
- 代碼解釋?zhuān)菏褂肈ataFrame.to_excel方法寫(xiě)入Excel文件。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 寫(xiě)入新的Excel文件
df.to_excel('processed_bank_data.xlsx', index=False)
3. 更新特定單元格
- 使用場(chǎng)景:修改Excel中的某個(gè)具體值。
- 代碼解釋?zhuān)和ㄟ^(guò)索引定位單元格并賦新值。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 更新第一個(gè)客戶(hù)的賬戶(hù)余額
df.at[0, '賬戶(hù)余額'] = 12000.0
# 保存更新后的數(shù)據(jù)
df.to_excel('updated_bank_data.xlsx', index=False)
4. 添加新的工作表
- 使用場(chǎng)景:向現(xiàn)有的Excel文件中添加一個(gè)新的工作表。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)來(lái)操作Excel文件。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
# 創(chuàng)建新的工作表
ws = wb.create_sheet(title="新工作表")
# 保存工作簿
wb.save('bank_data_with_new_sheet.xlsx')
5. 刪除工作表
- 使用場(chǎng)景:刪除Excel文件中的指定工作表。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)刪除工作表。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
# 刪除指定的工作表
if '新工作表' in wb.sheetnames:
del wb['新工作表']
# 保存工作簿
wb.save('bank_data_deleted_sheet.xlsx')
6. 復(fù)制工作表
- 使用場(chǎng)景:復(fù)制Excel文件中的指定工作表。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)復(fù)制工作表。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
# 復(fù)制指定的工作表
source = wb['Sheet1']
target = wb.copy_worksheet(source)
target.title = "復(fù)制的工作表"
# 保存工作簿
wb.save('bank_data_copied_sheet.xlsx')
7. 重命名工作表
- 使用場(chǎng)景:重命名Excel文件中的指定工作表。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)重命名工作表。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
# 重命名指定的工作表
sheet = wb['Sheet1']
sheet.title = "重命名的工作表"
# 保存工作簿
wb.save('bank_data_renamed_sheet.xlsx')
8. 查找特定值
- 使用場(chǎng)景:在Excel文件中查找特定值。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)查找特定值。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 查找特定值
result = df[df['姓名'] == '張三']
print(result)
9. 篩選數(shù)據(jù)
- 使用場(chǎng)景:根據(jù)條件篩選數(shù)據(jù)。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)篩選數(shù)據(jù)。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 篩選出貸款金額大于50000的數(shù)據(jù)
filtered_df = df[df['貸款金額'] > 50000]
# 打印篩選結(jié)果
print(filtered_df)
10. 排序數(shù)據(jù)
- 使用場(chǎng)景:對(duì)數(shù)據(jù)進(jìn)行排序。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)對(duì)數(shù)據(jù)進(jìn)行排序。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 按賬戶(hù)余額降序排序
sorted_df = df.sort_values(by='賬戶(hù)余額', ascending=False)
# 打印排序結(jié)果
print(sorted_df)
11. 數(shù)據(jù)分組與匯總
- 使用場(chǎng)景:對(duì)數(shù)據(jù)進(jìn)行分組并計(jì)算匯總。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)進(jìn)行分組和匯總。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 按貸款類(lèi)型分組并計(jì)算貸款金額總和
grouped_df = df.groupby('貸款類(lèi)型')['貸款金額'].sum()
# 打印分組匯總結(jié)果
print(grouped_df)
12. 合并單元格
- 使用場(chǎng)景:合并Excel文件中的多個(gè)單元格。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)合并單元格。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 合并單元格A1到C1
ws.merge_cells('A1:C1')
# 保存工作簿
wb.save('bank_data_merged_cells.xlsx')
13. 設(shè)置單元格格式
- 使用場(chǎng)景:設(shè)置Excel文件中單元格的格式。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)設(shè)置單元格格式。
示例代碼:
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 設(shè)置A1單元格的字體和對(duì)齊方式
cell = ws['A1']
cell.font = Font(bold=True, color="FF0000")
cell.alignment = Alignment(horizontal='center', vertical='center')
# 保存工作簿
wb.save('bank_data_formatted_cell.xlsx')
14. 插入圖表
- 使用場(chǎng)景:在Excel文件中插入圖表。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)插入圖表。
示例代碼:
import pandas as pd
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 保存到臨時(shí)文件
df.to_excel('temp_bank_data.xlsx', index=False)
# 加載現(xiàn)有工作簿
wb = load_workbook('temp_bank_data.xlsx')
ws = wb.active
# 創(chuàng)建柱狀圖
chart = BarChart()
data = Reference(ws, min_col=4, min_row=1, max_row=len(df) + 1, max_col=4)
categories = Reference(ws, min_col=1, min_row=2, max_row=len(df) + 1)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
chart.title = "賬戶(hù)余額柱狀圖"
ws.add_chart(chart, "F1")
# 保存工作簿
wb.save('bank_data_with_chart.xlsx')
15. 計(jì)算總和、平均值等
- 使用場(chǎng)景:計(jì)算數(shù)據(jù)的總和、平均值等統(tǒng)計(jì)信息。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)計(jì)算統(tǒng)計(jì)信息。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 計(jì)算賬戶(hù)余額的總和和平均值
total_balance = df['賬戶(hù)余額'].sum()
average_balance = df['賬戶(hù)余額'].mean()
# 打印結(jié)果
print(f"賬戶(hù)余額總和: {total_balance}")
print(f"賬戶(hù)余額平均值: {average_balance}")
16. 使用條件格式
- 使用場(chǎng)景:根據(jù)條件設(shè)置單元格格式。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)設(shè)置條件格式。
示例代碼:
from openpyxl import load_workbook
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 定義條件格式規(guī)則
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
rule = CellIsRule(operator='lessThan', formula=['15000'], fill=red_fill)
# 應(yīng)用條件格式
ws.conditional_formatting.add('D2:D6', rule)
# 保存工作簿
wb.save('bank_data_conditional_format.xlsx')
17. 拆分合并的單元格
- 使用場(chǎng)景:拆分Excel文件中已經(jīng)合并的單元格。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)拆分合并的單元格。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 拆分A1到C1的合并單元格
ws.unmerge_cells('A1:C1')
# 保存工作簿
wb.save('bank_data_unmerged_cells.xlsx')
18. 清除內(nèi)容或樣式
- 使用場(chǎng)景:清除Excel文件中單元格的內(nèi)容或樣式。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)清除內(nèi)容或樣式。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 清除A1單元格的內(nèi)容
ws['A1'].value = None
# 清除A1單元格的樣式
ws['A1'].font = None
ws['A1'].fill = None
ws['A1'].border = None
ws['A1'].alignment = None
ws['A1'].number_format = None
ws['A1'].protection = None
# 保存工作簿
wb.save('bank_data_cleared_content_and_style.xlsx')
19. 自動(dòng)調(diào)整列寬
- 使用場(chǎng)景:自動(dòng)調(diào)整Excel文件中列的寬度。
- 代碼解釋?zhuān)菏褂胦penpyxl庫(kù)自動(dòng)調(diào)整列寬。
示例代碼:
from openpyxl import load_workbook
# 加載現(xiàn)有工作簿
wb = load_workbook('bank_data.xlsx')
ws = wb.active
# 自動(dòng)調(diào)整所有列的寬度
for col in ws.columns:
max_length = 0
column = col[0].column_letter # 獲取列字母
for cell in col:
try:
if len(str(cell.value)) > max_length:
max_length = len(cell.value)
except:
pass
adjusted_width = (max_length + 2)
ws.column_dimensions[column].width = adjusted_width
# 保存工作簿
wb.save('bank_data_auto_adjusted_columns.xlsx')
20. 保存文件
- 使用場(chǎng)景:保存處理后的Excel文件。
- 代碼解釋?zhuān)菏褂胮andas庫(kù)保存處理后的數(shù)據(jù)。
示例代碼:
import pandas as pd
# 讀取現(xiàn)有數(shù)據(jù)
df = pd.read_excel('bank_data.xlsx')
# 保存處理后的數(shù)據(jù)
df.to_excel('final_processed_bank_data.xlsx', index=False)
到此這篇關(guān)于一文分享20個(gè)必學(xué)的Excel表格操作Python腳本的文章就介紹到這了,更多相關(guān)Python操作Excel表格腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python logging日志庫(kù)空間不足問(wèn)題解決
這篇文章主要介紹了Python logging日志庫(kù)空間不足問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python3實(shí)時(shí)操作處理日志文件的實(shí)現(xiàn)
本文主要介紹了Python3實(shí)時(shí)操作處理日志文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python 代碼實(shí)現(xiàn)列表的最小公倍數(shù)
這篇文章主要介紹了Python 代碼實(shí)現(xiàn)列表的最小公倍數(shù),代碼實(shí)現(xiàn)了計(jì)算列表中元素的最小公倍數(shù)的功能,包括公式介紹,需要的朋友可以參考一下2021-11-11
在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法
今天小編就為大家分享一篇在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
使用keras實(shí)現(xiàn)BiLSTM+CNN+CRF文字標(biāo)記NER
這篇文章主要介紹了使用keras實(shí)現(xiàn)BiLSTM+CNN+CRF文字標(biāo)記NER,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06

