乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python商務(wù)辦公——使用python庫進(jìn)行Excel讀寫

       Four兄 2019-08-23

      寫在前面

      新的一周,各位辛苦了,那就繼續(xù)辛苦三天吧!先前系列的文章中,小編和大家初步講解了一些怎么使用Python中的相關(guān)庫去繪制各種商務(wù)圖表,這絕對(duì)是我們工作中相當(dāng)重要的一個(gè)環(huán)節(jié)。但是,在我們平時(shí)工作中,除了可視化的需求之外,我們還需要返回一些整理好的Excel表格,因此,善良的小編怎么能忽視各位的這種潛在需求呢,本期文章,小編就和大家探討一下怎么使用python去操作Excel表格。對(duì)于Excel表格的操作主要包括三部分:讀入Excel表格、處理Excel表格以及寫入Excel表格。這三者中最重要以及最需要時(shí)間投入的就是Excel表格數(shù)據(jù)的分析與處理,這也將是筆者寫作的一大主題,后續(xù)文章中會(huì)逐步進(jìn)行介紹;而對(duì)于Excel表格的讀入,在python中也存在著一些相對(duì)比較高效與實(shí)用的方法,這部分內(nèi)容小編會(huì)在后期通過一篇文章進(jìn)行專門講解。排除了不講的,剩下的自然就是本期文章將要進(jìn)行介紹的了,本期文章將和大家一起探討一下如何使用python去寫入Excel表格。使用python寫入Excel存在多種方法,但是本期文章小編將主要介紹三種方法:使用pandas庫、使用xlwt庫以及使用xlsxwriter庫。所以下文主要分成三部分,分別圍繞這三種方法,不過小編會(huì)將重點(diǎn)放在第三部分也就是xlsxwriter庫的介紹中,在那里小編會(huì)給出一個(gè)詳細(xì)的操作示例來對(duì)這一庫進(jìn)行一個(gè)直觀性認(rèn)識(shí),而對(duì)其余兩部分的介紹小編會(huì)盡量只給出常用操作命令,下面我們正式進(jìn)入主題。

      pandas庫與Excel表格寫入

      pandas庫,相信大家都不再陌生了吧,小編已經(jīng)在多處地方進(jìn)行了介紹,并且一再告訴大家這個(gè)庫是進(jìn)行數(shù)據(jù)分析的絕對(duì)王者,所以在今后的數(shù)據(jù)處理與分析系列文章中我們將會(huì)再一次不斷地接觸到它。但是盡管pandas庫在進(jìn)行數(shù)據(jù)分析時(shí)相當(dāng)給力,但是不可否認(rèn)的是pandas庫在對(duì)Excel表格文件進(jìn)行寫入操作這一塊相對(duì)不是很優(yōu)秀,雖然pandas可以很方便地將數(shù)據(jù)寫入進(jìn)Excel表格,但是這種寫入?yún)s是無法進(jìn)行Excel格式設(shè)置的寫入,所以在很多時(shí)候我們必須對(duì)pandas導(dǎo)出的Excel表格進(jìn)行二次修改,以便使得表格顯得美觀可讀。需要跟隨練習(xí)的朋友請(qǐng)下載練習(xí)文件exercise(可以到小編博客下載)。


      小編默認(rèn)各位都已經(jīng)在電腦上正確地安裝了pandas庫,如果還沒有進(jìn)行安裝,那你可以參考小編前期的文章進(jìn)行安裝,然后使用pandas庫導(dǎo)入剛剛下載的練習(xí)文件(請(qǐng)記住一點(diǎn),pandas庫不僅可以寫入Excel文件,更加方便的是它能夠讀取Excel文件,這相對(duì)于接下來介紹的另外兩個(gè)庫是極具優(yōu)勢的)。

      import pandas as pd
      exercise = pd.read_excel('exercise.xlsx')
      exercise.head()

      第一行代碼導(dǎo)入了pandas庫,第二行代碼讀取了練習(xí)文件exercise.xlsx,第三行我們來看一下這一數(shù)據(jù)集的大致構(gòu)成,見下圖:


      數(shù)據(jù)表共有10列,后三列分別表示1-3月的銷售額,而倒數(shù)第四列的quota列表示的報(bào)價(jià)總額。既然小編的目的是導(dǎo)出Excel表格,所以直接的方式就是原數(shù)據(jù)原路導(dǎo)出,不過小編可不是那種無聊的人,在導(dǎo)出之前進(jìn)行些許的操作也不枉導(dǎo)入之累了,順便給大家介紹一個(gè)pandas庫中的超好用函數(shù)assign。小編打算在原數(shù)據(jù)表中增加一列匯總列去加總前三個(gè)月的銷售額,其次小編還想計(jì)算一下銷售總而占報(bào)價(jià)總額的比例,為了達(dá)到這一目的,小編使用以下代碼。
      exercise = exercise.assign(total=(exercise['Jan']+exercise['Feb']+exercise['Mar']))
      exercise = exercise.assign(pct=(exercise['total']/exercise['quota']))
      exercise.head()

      當(dāng)然你如果不習(xí)慣使用assign函數(shù)的話,還是可以采用之前小編所講解的方法,即通過使用下面的命令:
      exercise['total'] = exercise['Jan']+exercise['Feb']+exercise['Mar']
      exerciese['pct'] = exercise['total']/exercise['quota']

      不過小編強(qiáng)烈推薦你使用assign命令,既然已經(jīng)完成了數(shù)據(jù)集的調(diào)整,那么接下來就是需要把Excel表格導(dǎo)出,這及時(shí)一條命令的事情。

      exercise.to_excel('調(diào)整后練習(xí)數(shù)據(jù).xlsx',index = False)

      這樣便在工作目錄下創(chuàng)建了一個(gè)名為調(diào)整后練習(xí)數(shù)據(jù)的Excel文件,至于在導(dǎo)出命令中加上index=False是因?yàn)橐筽andas將數(shù)據(jù)的索引好也導(dǎo)出,下面看一下導(dǎo)出后的Excel文件:


      對(duì)此筆者只想說,什麼仇什麼怨,這種格式的數(shù)據(jù)表如果發(fā)給老總,估計(jì)你可以直接卷鋪蓋走人了。所以說pandas庫雖然提供了一項(xiàng)極其便利的Excel文件寫入操作,但是這種便利是以犧牲美觀可讀為代價(jià)的,這就是下面將要介紹的兩個(gè)庫橫空出世的原因。

      xlwt庫與Excel文件寫入

      上面介紹了使用pandas庫快速讀寫Excel文件,可以看出使用pandas庫可以很方便快速導(dǎo)出Excel文件,但是這種便利伴隨著你每天吃魷魚的風(fēng)險(xiǎn)(雖然小編最近酷愛燒汁魷魚須,但是真的不想被炒呀)。所以有需求就有創(chuàng)造,xlwt庫即刻誕生,這個(gè)庫可以很方便地對(duì)Excel文件進(jìn)行格式化調(diào)整,因此可以輸出干凈整潔美觀可讀的Excel文件。不過這個(gè)庫的是服務(wù)于office2003及之前的Excel文檔的,雖然它也可以出來之后的文檔,但是在這方面要稍稍遜色與后面將講到的xlsxwriter庫。所以小編這里不將對(duì)其進(jìn)行詳細(xì)講解,只對(duì)其最基本的命令進(jìn)行介紹,對(duì)這個(gè)庫有特殊偏好的朋友可以參看其官方文檔。

      在使用這個(gè)庫之前,你必須確保你已經(jīng)安裝了這個(gè)庫,所以請(qǐng)?jiān)诿钚兄惺褂靡韵麓a進(jìn)行xlwt庫的安裝。

      pip install xlwt
      >>> import xlwt
      >>> xlwt.__VERSION__
      1.2.0

      小編的xlwt庫版本是1.2.0,所以在上面的命令中自然會(huì)輸出這個(gè)數(shù)字序列,你也可以通過這條命令去檢查一下自己是否已經(jīng)正確地安裝了xlwt庫。現(xiàn)在假設(shè)你已經(jīng)完成了安裝,那么下面就開始使用這個(gè)庫進(jìn)行Excel文件的寫入吧。

      import xlwt
      workbook = xlwt.Workbook()
      worksheet = workbook.add_sheet('xlwt示例')
      worksheet.write(0,0,'xlwt操作測試')
      workbook.save('xlwt示例.xls')

      這樣就在當(dāng)前目錄下創(chuàng)建了一個(gè)名為xlwt示例的Excel03文件,可以看一下輸出效果:


      需要注意的是xlwt中對(duì)于行列的編號(hào)是從0,0開始的,這和python是一樣的,所以還沒有習(xí)慣Python序列編號(hào)的朋友當(dāng)注意這一點(diǎn),下面在用一個(gè)進(jìn)行格式化設(shè)置的例子來結(jié)束對(duì)于xlwt庫的介紹。
      import xlwt
      workbook = xlwt.Workbook()
      worksheet = workbook.add_sheet('xlwt格式化示例')
      style = xlwt.XFStyle() # 初始化樣式
      font = xlwt.Font() # 為樣式創(chuàng)建字體
      font.name = 'Times New Roman'
      font.bold = True # 黑體
      font.underline = True # 下劃線
      font.italic = True # 斜體字
      style.font = font # 設(shè)定樣式
      worksheet.write(0, 0, 'xlwt操作測試(非格式化)') # 不帶樣式的寫入
      worksheet.write(1, 0, 'xlwt操作測試(格式化)', style) # 帶樣式的寫入
      workbook.save('xlwt格式化示例.xls') # 保存文件

      可以看出相對(duì)于A1單元格中的內(nèi)容,A2單元格中內(nèi)容進(jìn)行了加黑加粗添加下劃線以及字體斜體的格式化設(shè)置。這相對(duì)于pandas庫的輸出是不是要好看太多了,雖然中間使用的代碼可能相對(duì)較多,但是你不要忘記代碼的存在不是為了解決一個(gè)問題,而是為了解決同類型的一系列問題的,所以這點(diǎn)前期的代碼寫作投入成本幾乎是可以忽略不計(jì)的。

      正如小編在文章開頭所講到的那樣,對(duì)于使用python進(jìn)行Excel文件寫入,小編最喜歡的一個(gè)庫就是xlsxwriter了,所以下面小編重點(diǎn)來講一下xlsxwriter庫。

      xlsxwriter庫與Excel文件寫入

      “千呼萬喚始出來,xlsxwriter閃亮登場”!下面小編開始講述python中進(jìn)行Excel表格文件寫入操作神器般的操作庫xlsxwriter(雖然這里說重點(diǎn)講解,但是小編也不會(huì)對(duì)這個(gè)庫的各種操作細(xì)節(jié)進(jìn)行講解,本期主要是對(duì)其最基本的命令進(jìn)行一下介紹,同時(shí)通過一個(gè)示例說明它的“變態(tài)”,更加詳細(xì)的介紹小編會(huì)在后續(xù)文章中使用5-7篇文章進(jìn)行逐步介紹。)。如果一直閱讀小編文章的朋友絕對(duì)會(huì)對(duì)這個(gè)庫的名字有一個(gè)特別深刻的了解,xlsxwriter=xlsx+writer,還需要小編進(jìn)一步解釋嗎?所以這個(gè)庫主要針對(duì)的是Excel2007版及之后的版本,而對(duì)于Excel03版本等缺少支持,不過我現(xiàn)在在想,大家誰還在使用Excel2003呢。當(dāng)然你如果一定要告訴我,你偏偏喜歡Excel2003,那么小編只能對(duì)你說,xlwt庫比較適合你。

      xlsxwriter的安裝與基本操作

      要使用xlsxwriter,你必須確保你先安裝了這個(gè)庫,為了讓各位朋友都能成功地安裝這個(gè)庫,小編這里提供四種安裝方式,我相信總要一款適合你。

      pip install xlsxwriter  # 使用pip方式進(jìn)行安裝
      easy_install xlsxwriter # 使用easy_install進(jìn)行安裝

      第三種方式是你首先在官網(wǎng)下載xlsxwriter庫的壓縮包,然后將工作目錄改變到setup.py所在的文件夾,繼而運(yùn)行以下命令:

      pip setup.py install

      第四種方式是通過github進(jìn)行安裝,見下面命令:

      git clone https://github.com/jmcnamara/XlsxWriter.git
      cd XlsxWriter
      python setup.py install

      所以小編還是建議你不要折騰了,直接使用第一種安裝方式進(jìn)行安裝吧,只要你不是上輩子毀了全宇宙,你就基本能夠安裝成功。既然安裝成功了,那就讓我們稍微嘚瑟一下來適應(yīng)一下它的語法命令吧。

      import xlsxwriter
      workbook = xlsxwriter.Workbook('xlsxwriter操作示例.xlsx')
      worksheet = workbook.add_worksheet()
      worksheet.write('A1', 'Hello xlsxwriter')
      workbook.close()

      第一行代碼導(dǎo)入xlsxwriter庫;第二行代碼創(chuàng)建一個(gè)名為xlsxwriter操作示例的工作簿;第三行代碼在這個(gè)工作簿創(chuàng)建了一個(gè)工作表;第四行是在新創(chuàng)建的工作表的A1單元格中輸入“Hello xlsxwriter”這個(gè)字符串;第五行用來關(guān)閉工作簿。這就是xlsxwriter庫用來進(jìn)行Excel表格寫入時(shí)最基本的幾條命令,更多格式化命令以及高級(jí)命令小編會(huì)在后續(xù)文章中進(jìn)行介紹,諸公不必著急。下面,小編以一個(gè)格式化的例子來完成對(duì)于xlsxwriter庫以及本期文章的講解。

      xlsxwriter操作Excel文件示例

      這里小編以文章開頭給出的Excel數(shù)據(jù)集為例來進(jìn)行演示,考慮到xlsxwriter庫無法讀入Excel文件(請(qǐng)一定要記住,xlsxwriter是無法讀入Excel的),這里使用pandas配合xlsxwriter完成對(duì)于數(shù)據(jù)集的格式化設(shè)置。直接上代碼:

      # 導(dǎo)入相關(guān)的庫
      import numpy as np
      import pandas as pd
      from xlsxwriter.utility import xl_rowcol_to_cell
      import xlsxwriter

      # 讀入exercise文件,并增加兩列
      df = pd.read_excel('exercise.xlsx')
      number_rows = len(df.index)
      df = df.assign(total=(df['Jan'] + df['Feb'] + df['Mar']))
      df = df.assign(pct=(df['total']/df['quota']))

      # 采用xlsxwriter內(nèi)核,使用pandas創(chuàng)建一個(gè)Excel文件xlsxwriter格式化示例
      writer = pd.ExcelWriter('xlsxwriter格式化示例.xlsx', engine='xlsxwriter')
      df.to_excel(writer, index=False, sheet_name='report')

      # 激活工作簿和工作表以便進(jìn)行下面寫入
      workbook = writer.book
      worksheet = writer.sheets['report']

      # 設(shè)置工作表的窗口
      worksheet.set_zoom(90)

      # 增加一個(gè)貨幣格式,以便使用到銷售額上面
      money_fmt = workbook.add_format({'num_format': '$#,##0', 'bold': True})

      # 增加一個(gè)百分比格式,以便使用到pct上面
      percent_fmt = workbook.add_format({'num_format': '0.0%', 'bold': True})

      # 對(duì)于工作表的總體格式設(shè)置
      total_fmt = workbook.add_format({'align': 'right', 'num_format': '$#,##0','bold': True, 'bottom':6})
      # 對(duì)于表格中百分比數(shù)字的總體格式設(shè)置
      total_percent_fmt = workbook.add_format({'align': 'right', 'num_format': '0.0%','bold': True, 'bottom':6})

      # 對(duì)數(shù)據(jù)表列寬以及數(shù)值格式進(jìn)行設(shè)置
      worksheet.set_column('B:D', 20)
      worksheet.set_column('E:E', 5)
      worksheet.set_column('F:F', 10)
      worksheet.set_column('G:K', 12, money_fmt)
      worksheet.set_column('L:L', 12, percent_fmt)

      # 在數(shù)據(jù)表中增加一行匯總行
      for column in range(6, 11):
         cell_location = xl_rowcol_to_cell(number_rows+1, column)
         start_range = xl_rowcol_to_cell(1, column)
         end_range = xl_rowcol_to_cell(number_rows, column)
         formula = '=SUM({:s}:{:s})'.format(start_range, end_range)
         worksheet.write_formula(cell_location, formula, total_fmt)

      # 給匯總行增加一個(gè)總計(jì)標(biāo)簽
      worksheet.write_string(number_rows+1, 5, 'Total',total_fmt)
      percent_formula = '=1+(K{0}-G{0})/G{0}'.format(number_rows+2)
      worksheet.write_formula(number_rows+1, 11, percent_formula, total_percent_fmt)

      # 顏色設(shè)置
      color_range = 'L2:L{}'.format(number_rows+1)
      format1 = workbook.add_format({'bg_color': '#FFC7CE',
                                    'font_color': '#9C0006'})
      format2 = workbook.add_format({'bg_color': '#C6EFCE',
                                    'font_color': '#006100'})
      worksheet.conditional_format(color_range, {'type': 'top',
                                                'value': '5',
                                                'format': format2})
      worksheet.conditional_format(color_range, {'type': 'bottom',
                                                'value': '5',
                                                'format': format1})
      writer.save()

      相比最先開始直接由pandas庫導(dǎo)出的Excel表格,這個(gè)表格是不是更加美觀與可讀了。我想你發(fā)送這樣的表格給你老板應(yīng)該不至于被炒魷魚吧。更多的設(shè)置技巧要在實(shí)踐中根據(jù)自己的創(chuàng)意一步步進(jìn)行提升,關(guān)鍵是你的思維與創(chuàng)意!講到這里就暫時(shí)完成了xlsxwriter庫的初步探討,更多內(nèi)容會(huì)在后續(xù)繼續(xù)更新。

      后記

      本文講到這里就暫告一段落了,本期文章介紹了三種用于操作Excel寫入的相關(guān)庫,通過介紹,小編最終將重點(diǎn)置于pandas+xlsxwriter上。本文只是對(duì)這種組合進(jìn)行了初步探討,后續(xù)會(huì)進(jìn)一步加大對(duì)這一主題的講解。下期文章小編準(zhǔn)備接著回到matplotlib庫上,講解這一庫的另外一種繪圖語法,敬請(qǐng)期待!再次感謝你們的支持與鼓勵(lì),你們的陪伴是小編前進(jìn)的動(dòng)力!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多