Python進(jìn)階之Excel基本操作介紹
概述
在現(xiàn)實(shí)中,很多工作都需要與數(shù)據(jù)打交道,Excel 作為常用的數(shù)據(jù)處理工具,一直備受人們的青睞,而大部分人都是手動(dòng)操作 Excel,如果數(shù)據(jù)量較小且是一些簡(jiǎn)單的操作還好說(shuō),但如果數(shù)據(jù)量較大或是一些復(fù)雜的操作,工作量可想而知,因此,我們需要掌握一種簡(jiǎn)單、高效的方法來(lái)操作 Excel。
在數(shù)據(jù)處理方面,Python 一直扮演著重要的角色,對(duì)于 Excel 操作,它有著完整且成熟的第三方庫(kù),使用也較為簡(jiǎn)單。
Python 中常用 Excel 操作庫(kù)如下:
- xlrd: 從 Excel 中讀取數(shù)據(jù),支持 xls、xlsx。
- xlwt: 向 Excel 中寫(xiě)入數(shù)據(jù),支持 xls。
- xlutils: 提供了一些 Excel 的實(shí)用操作,比如復(fù)制、拆分、過(guò)濾等,通常與 xlrd、xlwt 一起使用。
- XlsxWriter: 向 Excel 中寫(xiě)入數(shù)據(jù),支持 xlsx。
- openpyxl : 用于讀寫(xiě) Excel,支持 xlsx。
寫(xiě)入
我們向Excel 中寫(xiě)入一些數(shù)據(jù)。
使用 xlwt
通過(guò)pip install xlwt 命令安裝。
import xlwt
# 創(chuàng)建工作簿 wb = xlwt.Workbook() # 創(chuàng)建表單 sh = wb.add_sheet('test') # 創(chuàng)建字體對(duì)象 font = xlwt.Font() # 字體加粗 font.bold = True alm = xlwt.Alignment() # 設(shè)置左對(duì)齊 alm.horz = 0x01 # 創(chuàng)建樣式對(duì)象 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
通過(guò)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è)置左對(duì)齊 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è)置左對(duì)齊 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':'用戶(hù)年齡折線圖'}) chart.set_x_axis({ 'name':'姓名'}) chart.set_y_axis({ 'name':'年齡'}) sh.insert_chart('A9', chart) wk.close()
讀取
我們使用 xlrd 讀取之前寫(xiě)入的數(shù)據(jù),使用 pip install xlrd 命令安裝。
import xlrd # 打開(kāi) wb = xlrd.open_workbook('test.xlsx') print( 'sheet名稱(chēng):', wb.sheet_names()) print( 'sheet數(shù)量:', wb.nsheets) # 根據(jù) sheet 索引獲取 sheet sh = wb.sheet_by_index(0) # 根據(jù) sheet 名稱(chēng)獲取 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('第二行第三列值的類(lèi)型為:', type(sh.cell_value(1, 2)))
修改
之前寫(xiě)入的數(shù)據(jù)還有一個(gè)平均年齡是空著的,我們先讀取之前寫(xiě)入的數(shù)據(jù),再計(jì)算出平均值,最后將平均值寫(xiě)入。這里要用到 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è)置左對(duì)齊 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基本操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何搜索查找并解決Django相關(guān)的問(wèn)題
每個(gè)程序員都會(huì)在開(kāi)發(fā)過(guò)程中遇到這樣或那樣的問(wèn)題, 有時(shí)光靠一個(gè)人是無(wú)法解決所有問(wèn)題的, 所以我們應(yīng)該找到適當(dāng)?shù)牡胤教釂?wèn).2014-06-06pycharm2020上部署配置AutoGPT4.0(保姆級(jí)教程)
本文主要介紹了pycharm2020上部署配置AutoGPT4.0,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06pycharm 在debug循環(huán)時(shí)快速debug到指定循環(huán)次數(shù)的操作方法
在 PyCharm 中,可以使用條件斷點(diǎn)來(lái)實(shí)現(xiàn)在特定循環(huán)次數(shù)后停止調(diào)試,本文重點(diǎn)介紹pycharm 在debug循環(huán)時(shí)快速debug到指定循環(huán)次數(shù)的操作方法,需要的朋友可以參考下2024-04-04Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問(wèn)對(duì)象屬性實(shí)例
這篇文章主要介紹了Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問(wèn)對(duì)象屬性實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Django rest framework jwt的使用方法詳解
這篇文章主要介紹了Django rest framework jwt的使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08手把手教你用python搶票回家過(guò)年(代碼簡(jiǎn)單)
下面給大家分享一個(gè)使用Python寫(xiě)一個(gè)命令行版的火車(chē)票查看器, 只要在命令行敲一行命令就能獲得你想要的火車(chē)票信息,具體實(shí)現(xiàn)代碼大家參考下本文2018-01-01常見(jiàn)Python AutoEDA工具庫(kù)及功能使用探究
AutoEDA(自動(dòng)探索性數(shù)據(jù)分析)工具庫(kù)是數(shù)據(jù)科學(xué)中至關(guān)重要的一部分,它們能夠自動(dòng)生成數(shù)據(jù)摘要、探查數(shù)據(jù)的基本特征、檢測(cè)異常值和提供可視化,為數(shù)據(jù)科學(xué)家和分析師們提供了解數(shù)據(jù)的便捷方式,本文為大家介紹常見(jiàn)的AutoEDA工具庫(kù)及其功能和示例代碼2024-01-01Python爬蟲(chóng)使用腳本登錄Github并查看信息
這篇文章主要介紹了Python爬蟲(chóng)之用腳本登錄Github并查看信息,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07