Python進(jìn)階之Excel基本操作介紹
概述
在現(xiàn)實中,很多工作都需要與數(shù)據(jù)打交道,Excel 作為常用的數(shù)據(jù)處理工具,一直備受人們的青睞,而大部分人都是手動操作 Excel,如果數(shù)據(jù)量較小且是一些簡單的操作還好說,但如果數(shù)據(jù)量較大或是一些復(fù)雜的操作,工作量可想而知,因此,我們需要掌握一種簡單、高效的方法來操作 Excel。
在數(shù)據(jù)處理方面,Python 一直扮演著重要的角色,對于 Excel 操作,它有著完整且成熟的第三方庫,使用也較為簡單。
Python 中常用 Excel 操作庫如下:
- xlrd: 從 Excel 中讀取數(shù)據(jù),支持 xls、xlsx。
- xlwt: 向 Excel 中寫入數(shù)據(jù),支持 xls。
- xlutils: 提供了一些 Excel 的實用操作,比如復(fù)制、拆分、過濾等,通常與 xlrd、xlwt 一起使用。
- XlsxWriter: 向 Excel 中寫入數(shù)據(jù),支持 xlsx。
- openpyxl : 用于讀寫 Excel,支持 xlsx。
寫入
我們向Excel 中寫入一些數(shù)據(jù)。
使用 xlwt
通過pip install xlwt 命令安裝。
import xlwt
# 創(chuàng)建工作簿 wb = xlwt.Workbook() # 創(chuàng)建表單 sh = wb.add_sheet('test') # 創(chuàng)建字體對象 font = xlwt.Font() # 字體加粗 font.bold = True alm = xlwt.Alignment() # 設(shè)置左對齊 alm.horz = 0x01 # 創(chuàng)建樣式對象 style1 = xlwt.XFStyle() style2 = xlwt.XFStyle() style1.font = font style2.alignment = alm # write 方法參數(shù)1:行,參數(shù)2:列,參數(shù)3:內(nèi)容 sh.write(0, 1, '姓名', style1) sh.write(0, 2, '年齡', style1) sh.write(1, 1, '張三') sh.write(1, 2, 50, style2) sh.write(2, 1, '李四') sh.write(2, 2, 30, style2) sh.write(3, 1, '王五') sh.write(3, 2, 40, style2) sh.write(4, 1, '趙六') sh.write(4, 2, 60, style2) sh.write(5, 0, '平均年齡', style1) # 保存 wb.save('test.xls')
執(zhí)行結(jié)果:
使用 XlsxWriter
通過pip install XlsxWriter 命令安裝。
import xlsxwriter ???????# 創(chuàng)建工作簿 workbook = xlsxwriter.Workbook('test.xlsx') # 創(chuàng)建表單 sh = workbook.add_worksheet('test') fmt1 = workbook.add_format() fmt2 = workbook.add_format() # 字體加粗 fmt1.set_bold(True) # 設(shè)置左對齊 fmt2.set_align('left') # 數(shù)據(jù) data = [ ['', '姓名', '年齡'], ['', '張三', 50], ['', '李四', 30], ['', '王五', 40], ['', '趙六', 60], ['平均年齡', '', ] ] sh.write_row('A1', data[0], fmt1) sh.write_row('A2', data[1], fmt2) sh.write_row('A3', data[2], fmt2) sh.write_row('A4', data[3], fmt2) sh.write_row('A5', data[4], fmt2) sh.write_row('A6', data[5], fmt1) chart = workbook.add_chart({ 'type': 'line'}) workbook.close()
XlsxWriter 可以很方便的生成圖表。
import xlsxwriter ???????# 創(chuàng)建工作簿 wk = xlsxwriter.Workbook('test.xlsx') # 創(chuàng)建表單 sh = wk.add_worksheet('test') fmt1 = wk.add_format() fmt2 = wk.add_format() # 字體加粗 fmt1.set_bold(True) # 設(shè)置左對齊 fmt2.set_align('left') # 數(shù)據(jù) data = [ ['', '姓名', '年齡'], ['', '張三', 50], ['', '李四', 30], ['', '王五', 40], ['', '趙六', 60], ['平均年齡', '', ] ] sh.write_row('A1', data[0], fmt1) sh.write_row('A2', data[1], fmt2) sh.write_row('A3', data[2], fmt2) sh.write_row('A4', data[3], fmt2) sh.write_row('A5', data[4], fmt2) sh.write_row('A6', data[5], fmt1) ''' area:面積圖 bar:直方圖 column:柱狀圖 line:折線圖 pie:餅圖 doughnut:環(huán)形圖 radar:雷達(dá)圖 ''' chart = wk.add_chart({ 'type': 'line'}) # 創(chuàng)建圖表 chart.add_series( { 'name':'=test!$B$1', 'categories':'=test!$B$2:$B$5', 'values': '=test!$C$2:$C$5' } ) chart.set_title({ 'name':'用戶年齡折線圖'}) chart.set_x_axis({ 'name':'姓名'}) chart.set_y_axis({ 'name':'年齡'}) sh.insert_chart('A9', chart) wk.close()
讀取
我們使用 xlrd 讀取之前寫入的數(shù)據(jù),使用 pip install xlrd 命令安裝。
import xlrd # 打開 wb = xlrd.open_workbook('test.xlsx') print( 'sheet名稱:', wb.sheet_names()) print( 'sheet數(shù)量:', wb.nsheets) # 根據(jù) sheet 索引獲取 sheet sh = wb.sheet_by_index(0) # 根據(jù) sheet 名稱獲取 sheet # sh = wb.sheet_by_name('test') print( u'sheet %s 有 %d 行' % (sh.name, sh.nrows)) print( u'sheet %s 有 %d 列' % (sh.name, sh.ncols)) print('第二行內(nèi)容:', sh.row_values(1)) print('第三列內(nèi)容:', sh.col_values(2)) print('第二行第三列的值為:', sh.cell_value(1, 2)) print('第二行第三列值的類型為:', type(sh.cell_value(1, 2)))
修改
之前寫入的數(shù)據(jù)還有一個平均年齡是空著的,我們先讀取之前寫入的數(shù)據(jù),再計算出平均值,最后將平均值寫入。這里要用到 xlutils 模塊,使用 pip install xlutils 安裝。
import xlrd, xlwt from xlutils.copy import copy def avg(list): sumv = 0 for i in range(len(list)): sumv += list[i] return int(sumv / len(list)) # formatting_info 為 True 表示保留原格式 wb = xlrd.open_workbook('test.xls', formatting_info=True) # 復(fù)制 wbc = copy(wb) sh = wb.sheet_by_index(0) age_list = sh.col_values(2) age_list = age_list[1:len(age_list)-1] avg_age = avg(age_list) sh = wbc.get_sheet(0) # 設(shè)置左對齊 alm = xlwt.Alignment() alm.horz = 0x01 style = xlwt.XFStyle() style.alignment = alm sh.write(5, 2, avg_age, style) wbc.save('test.xls')
以上就是Python進(jìn)階之Excel基本操作介紹的詳細(xì)內(nèi)容,更多關(guān)于Python Excel基本操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pycharm2020上部署配置AutoGPT4.0(保姆級教程)
本文主要介紹了pycharm2020上部署配置AutoGPT4.0,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06pycharm 在debug循環(huán)時快速debug到指定循環(huán)次數(shù)的操作方法
在 PyCharm 中,可以使用條件斷點來實現(xiàn)在特定循環(huán)次數(shù)后停止調(diào)試,本文重點介紹pycharm 在debug循環(huán)時快速debug到指定循環(huán)次數(shù)的操作方法,需要的朋友可以參考下2024-04-04Python轉(zhuǎn)換字典成為對象,可以用"."方式訪問對象屬性實例
這篇文章主要介紹了Python轉(zhuǎn)換字典成為對象,可以用"."方式訪問對象屬性實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Django rest framework jwt的使用方法詳解
這篇文章主要介紹了Django rest framework jwt的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08