久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 Four兄 2019-08-23

寫(xiě)在前面

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

pandas庫(kù)與Excel表格寫(xiě)入

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


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

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

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


數(shù)據(jù)表共有10列,,后三列分別表示1-3月的銷售額,而倒數(shù)第四列的quota列表示的報(bào)價(jià)總額,。既然小編的目的是導(dǎo)出Excel表格,,所以直接的方式就是原數(shù)據(jù)原路導(dǎo)出,不過(guò)小編可不是那種無(wú)聊的人,,在導(dǎo)出之前進(jìn)行些許的操作也不枉導(dǎo)入之累了,,順便給大家介紹一個(gè)pandas庫(kù)中的超好用函數(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ù)的話,,還是可以采用之前小編所講解的方法,即通過(guò)使用下面的命令:
exercise['total'] = exercise['Jan']+exercise['Feb']+exercise['Mar']
exerciese['pct'] = exercise['total']/exercise['quota']

不過(guò)小編強(qiáng)烈推薦你使用assign命令,,既然已經(jīng)完成了數(shù)據(jù)集的調(diào)整,,那么接下來(lái)就是需要把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ì)此筆者只想說(shuō),,什麼仇什麼怨,,這種格式的數(shù)據(jù)表如果發(fā)給老總,估計(jì)你可以直接卷鋪蓋走人了,。所以說(shuō)pandas庫(kù)雖然提供了一項(xiàng)極其便利的Excel文件寫(xiě)入操作,,但是這種便利是以犧牲美觀可讀為代價(jià)的,這就是下面將要介紹的兩個(gè)庫(kù)橫空出世的原因,。

xlwt庫(kù)與Excel文件寫(xiě)入

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

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

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

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

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

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


需要注意的是xlwt中對(duì)于行列的編號(hào)是從0,0開(kāi)始的,這和python是一樣的,,所以還沒(méi)有習(xí)慣Python序列編號(hào)的朋友當(dāng)注意這一點(diǎn),,下面在用一個(gè)進(jìn)行格式化設(shè)置的例子來(lái)結(jié)束對(duì)于xlwt庫(kù)的介紹。
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操作測(cè)試(非格式化)') # 不帶樣式的寫(xiě)入
worksheet.write(1, 0, 'xlwt操作測(cè)試(格式化)', style) # 帶樣式的寫(xiě)入
workbook.save('xlwt格式化示例.xls') # 保存文件

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

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

xlsxwriter庫(kù)與Excel文件寫(xiě)入

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

xlsxwriter的安裝與基本操作

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

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

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

pip setup.py install

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

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

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

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

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

xlsxwriter操作Excel文件示例

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

# 導(dǎo)入相關(guān)的庫(kù)
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)行下面寫(xiě)入
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()

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

后記

本文講到這里就暫告一段落了,本期文章介紹了三種用于操作Excel寫(xiě)入的相關(guān)庫(kù),,通過(guò)介紹,,小編最終將重點(diǎn)置于pandas+xlsxwriter上。本文只是對(duì)這種組合進(jìn)行了初步探討,,后續(xù)會(huì)進(jìn)一步加大對(duì)這一主題的講解,。下期文章小編準(zhǔn)備接著回到matplotlib庫(kù)上,講解這一庫(kù)的另外一種繪圖語(yǔ)法,,敬請(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)購(gòu)買等信息,謹(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)論公約

    類似文章 更多