版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python報(bào)表自動(dòng)化對(duì)比Excel,輕松學(xué)習(xí)目錄TOC\h\h第1部分Python基礎(chǔ)\h第1章認(rèn)識(shí)自動(dòng)化報(bào)表\h1.1Excel的基本組成\h1.2制作一份自動(dòng)化報(bào)表的流程\h1.3用Python操作Excel的各種庫\h第2章Python基礎(chǔ)知識(shí)\h2.1Python是什么\h2.2Python的下載與安裝\h2.3JupyterNotebook介紹\h2.4基本概念\h2.5字符串\h2.6數(shù)據(jù)結(jié)構(gòu)——列表\h2.7數(shù)據(jù)結(jié)構(gòu)——字典\h2.8數(shù)據(jù)結(jié)構(gòu)——元組\h2.9運(yùn)算符\h2.10循環(huán)語句\h2.11條件語句\h2.12函數(shù)\h2.13高級(jí)特性\h2.14庫\h第2部分格式設(shè)置\h第3章用Python對(duì)報(bào)表進(jìn)行基本操作\h3.1打開已有的工作簿\h3.2創(chuàng)建新的工作簿\h3.3Pandas與openpyxl之間的轉(zhuǎn)換\h3.4Sheet相關(guān)設(shè)置\h第4章用Python實(shí)現(xiàn)單元格選擇和字體設(shè)置\h4.1用Python選擇單元格\h4.2用Python設(shè)置Excel字體\h第5章用Python設(shè)置Excel對(duì)齊方式\h5.1設(shè)置對(duì)齊方式\h5.2合并與解除單元格\h5.3設(shè)置合并單元格樣式\h5.4案例:批量設(shè)置單元格對(duì)齊方式\h第6章用Python設(shè)置Excel數(shù)字、條件格式\h6.1用Python設(shè)置Excel數(shù)字格式\h6.2用Python設(shè)置Excel條件格式\h第7章用Python設(shè)置Excel單元格\h7.1插入行或列\(zhòng)h7.2刪除行或列\(zhòng)h7.3行高/列寬的設(shè)置\h7.4隱藏行或列\(zhòng)h7.5案例:批量設(shè)置多行/列的行高/列寬\h第8章用Python對(duì)Excel進(jìn)行編輯\h8.1數(shù)據(jù)排序\h8.2數(shù)據(jù)篩選\h8.3數(shù)據(jù)查找與替換\h第3部分函數(shù)\h第9章用Python實(shí)現(xiàn)Excel中的函數(shù)計(jì)算\h9.1函數(shù)中的常見錯(cuò)誤\h9.2邏輯函數(shù)\h9.3文本函數(shù)\h9.4日期與時(shí)間函數(shù)\h9.5查找與引用\h9.6數(shù)學(xué)和三角函數(shù)\h9.7統(tǒng)計(jì)函數(shù)\h9.8自定義公式\h第4部分自動(dòng)化報(bào)表\h第10章審閱和視圖設(shè)置\h10.1新建批注\h10.2文檔保護(hù)\h10.3凍結(jié)窗格\h第11章用Python繪制Excel圖表\h11.1圖表基本組成元素\h11.2圖表繪制基本流程\h11.3圖表基本設(shè)置\h11.4圖表繪制\h11.5如何將圖片插入Excel中\(zhòng)h第12章用Python對(duì)Excel文件進(jìn)行批量操作\h12.1OS庫介紹\h12.2OS庫基本操作\h12.3批量操作\h12.4其他批量操作\h第13章自動(dòng)發(fā)送郵件\h13.1使用郵箱的第一步\h13.2一份郵件的組成\h13.3如何發(fā)送郵件\h13.4正式發(fā)送一份郵件\h13.5批量發(fā)送郵件\h第14章將Python代碼轉(zhuǎn)化為可執(zhí)行的程序\h14.1安裝所需要的Python庫\h14.2對(duì)代碼進(jìn)行打包\h第15章工作中的報(bào)表自動(dòng)化實(shí)戰(zhàn)\h15.1當(dāng)日各項(xiàng)指標(biāo)的同/環(huán)比情況\h15.2當(dāng)日各省份創(chuàng)建訂單量情況\h15.3最近一段時(shí)間創(chuàng)建訂單量趨勢(shì)\h15.4將不同的結(jié)果進(jìn)行合并第1部分
Python基礎(chǔ)第1章
認(rèn)識(shí)自動(dòng)化報(bào)表1.1Excel的基本組成圖1-1所示是Excel中各個(gè)部分的組成關(guān)系,我們工作中每天會(huì)處理很多Excel文件,一個(gè)Excel文件其實(shí)就是一個(gè)工作簿。每次新建一個(gè)Excel文件時(shí),文件名都會(huì)默認(rèn)是工作簿x,其中x就是新建的文件個(gè)數(shù)。而一個(gè)工作簿中又可以有多個(gè)Sheet,不同Sheet之間是一個(gè)獨(dú)立的表。每一個(gè)Sheet又由若干個(gè)單元格組成。每一個(gè)單元格又有若干的元素或?qū)傩?。我們一般?duì)Excel文件設(shè)置最多的就是對(duì)單元格的元素進(jìn)行設(shè)置。圖1-1對(duì)單元格元素進(jìn)行設(shè)置的主要內(nèi)容如圖1-2所示,比如字體、對(duì)齊方式、條件格式等。本書也是按照Excel功能區(qū)中的模塊進(jìn)行編寫的。圖1-21.2制作一份自動(dòng)化報(bào)表的流程圖1-3是我整理的制作一份自動(dòng)化報(bào)表需要經(jīng)歷的流程,主要分為5個(gè)步驟。圖1-3第1步,步驟拆解。這里是對(duì)要做的報(bào)表進(jìn)行步驟拆解,這個(gè)步驟拆解和用不用工具或者用什么工具是沒有關(guān)系的,比如做報(bào)表的第一步一般都是收集數(shù)據(jù),這個(gè)數(shù)據(jù)可能是線下人員記錄在紙質(zhì)筆記本上的,也可能是存儲(chǔ)在Excel表格中的,還有可能是存儲(chǔ)在數(shù)據(jù)庫中的。因?yàn)閿?shù)據(jù)源的類型或者存儲(chǔ)方式不同,對(duì)應(yīng)的收集數(shù)據(jù)的方式也會(huì)不同,但是收集數(shù)據(jù)這個(gè)步驟本身是不會(huì)變的,這個(gè)步驟的目的就是把數(shù)據(jù)收集過來。第2步,找對(duì)應(yīng)代碼。思考第1步中拆解的步驟中每一步對(duì)應(yīng)的實(shí)現(xiàn)方式,一般都是去找對(duì)應(yīng)每一步的代碼,比如導(dǎo)入數(shù)據(jù)的代碼是什么、重復(fù)值刪除的代碼是什么。第3步,組合代碼。將第2步中各個(gè)步驟對(duì)應(yīng)的代碼進(jìn)行組合,組合成一個(gè)完整的代碼。第4步,驗(yàn)證結(jié)果。對(duì)第3步中完整代碼得出來的報(bào)表結(jié)果進(jìn)行驗(yàn)證,看結(jié)果是否正確。第5步,等待調(diào)用。在需要制作報(bào)表時(shí),執(zhí)行已寫好的代碼。其實(shí),報(bào)表自動(dòng)化本質(zhì)上就是讓計(jì)算機(jī)代替人工做事情的過程,我們只需要將人工需要做的每一個(gè)步驟轉(zhuǎn)化成計(jì)算機(jī)可以理解的語言,也就是代碼,然后讓計(jì)算機(jī)自動(dòng)執(zhí)行,就是實(shí)現(xiàn)了自動(dòng)化。1.3用Python操作Excel的各種庫Python中可以用來操作Excel的庫有很多,每個(gè)庫都有各自的優(yōu)勢(shì)和不足,我們需要根據(jù)自己的需求來選擇對(duì)應(yīng)的庫,有時(shí)任意一個(gè)單一的庫都不太能滿足我們的全部需求,經(jīng)常需要結(jié)合使用多個(gè)庫。目前,Python操作Excel的庫主要如下。?win32com?xlrd?xlwt?xlutils?xlsxwriter?xlwings?openpyxl?Pandaswin32com可以被理解成是鼠標(biāo)模擬器,是通過模擬計(jì)算機(jī)中的每一個(gè)事件來實(shí)現(xiàn)對(duì)Excel的操作,目前只適用于Windows系統(tǒng)的計(jì)算機(jī),而且網(wǎng)上相關(guān)資料很少,學(xué)習(xí)起來會(huì)比較困難。xlrd主要用于將已經(jīng)存在的Excel文件讀取到Python中。與xlrd相對(duì)應(yīng)的是xlwt,xlwt主要用于將Python中的文件存儲(chǔ)到Excel中。xlutils可以被理解成是xlrd和xlwt的組合,用于對(duì)文件進(jìn)行讀和寫的操作。xlsxwriter可以進(jìn)行各種樣式的設(shè)置,還可以進(jìn)行圖表繪制等操作,唯一不足的是不能夠讀取現(xiàn)有的文件。xlwings是新出來的庫,很受歡迎,操作的結(jié)果可以實(shí)時(shí)顯示在Excel中,還可以在VBA中調(diào)用Python代碼,也支持與各種語言進(jìn)行交互。但是代碼形式和常規(guī)的代碼不太一樣,在單元格格式設(shè)置方面的功能也不全面。openpyxl是老牌的Excel庫了,各項(xiàng)功能都比較中規(guī)中矩。Pandas是數(shù)據(jù)處理“神器”,現(xiàn)在Python數(shù)據(jù)處理基本都是用它了。我們對(duì)Excel操作的常規(guī)需求,主要有兩種,一種是數(shù)據(jù)處理,另一種是格式樣式設(shè)置。數(shù)據(jù)處理方面必然選擇Pandas庫,還需要找一個(gè)能夠設(shè)置格式樣式的庫與pandas相結(jié)合。本書選擇了openpyxl庫,主要是因?yàn)檫@個(gè)庫的格式設(shè)置功能比較全,而且代碼實(shí)現(xiàn)方式會(huì)比較好理解。當(dāng)然,也建議大家在學(xué)習(xí)的過程中不要局限于本書,可以去了解一下其他的庫。第2章
Python基礎(chǔ)知識(shí)2.1Python是什么首先,Python是一門編程語言,具有豐富和強(qiáng)大的庫。它被稱為膠水語言,之所以得到這樣的稱呼,是因?yàn)樗軌虬延闷渌Z言制作的各種庫(尤其是C/C++語言)很輕松地連接在一起。Python語言的語法簡(jiǎn)單、容易上手,最主要是有很多現(xiàn)成的庫可以直接調(diào)用,可以滿足在不同領(lǐng)域的需求,包括數(shù)據(jù)分析、機(jī)器學(xué)習(xí)及人工智能領(lǐng)域,受到越來越多編程人士的喜歡。2.2Python的下載與安裝2.2.1安裝教程本書沒有選擇下載官方的Python版本,而是下載了Python的一個(gè)開源版本Anaconda。之所以選擇Anaconda,是因?yàn)锳naconda對(duì)剛開始學(xué)習(xí)Python的人實(shí)在是太友好了。我們知道Python有很多現(xiàn)成的庫可以直接調(diào)用,但是在調(diào)用之前需要先進(jìn)行安裝。如果你下載Python的官方版本,則需要自己手動(dòng)安裝需要使用的庫。如果下載Anaconda,那么里面會(huì)自帶一些常用的Python庫,不再需要自己去安裝。接下來就先看一下Anaconda的具體安裝流程。因?yàn)閃indows系統(tǒng)和MacOS系統(tǒng)的安裝流程略有不同,所以我們分開來講述。1.Windows系統(tǒng)安裝在Windows系統(tǒng)中安裝Anaconda的具體流程如下。Step1:查看計(jì)算機(jī)的系統(tǒng)類型是32位還是64位的,如圖2-1所示。圖2-1Step2:進(jìn)入Anaconda官方網(wǎng)站,點(diǎn)擊上方導(dǎo)航欄中的“Products”按鈕,然后選擇“IndividualEdition”選項(xiàng),即個(gè)人版,如圖2-2所示。圖2-2需要注意的是,Anaconda官網(wǎng)的界面會(huì)不定時(shí)進(jìn)行調(diào)整,所以你看到的界面和圖2-2可能會(huì)有所不同。Step3:點(diǎn)擊“Download”按鈕進(jìn)行下載,如圖2-3所示。圖2-3Step4:根據(jù)Step1中獲取到的計(jì)算機(jī)系統(tǒng)位數(shù),選擇Windows下方的對(duì)應(yīng)版本,64-Bit表示64位操作系統(tǒng),32-Bit表示32位操作系統(tǒng)。點(diǎn)擊具體版本,就會(huì)自動(dòng)彈出保存頁面,進(jìn)行下載,如圖2-4所示。圖2-4Step5:將安裝文件下載到計(jì)算機(jī)中,因?yàn)樵摼W(wǎng)站是國(guó)外的,而且文件比較大,所以下載速度會(huì)比較慢。Step6:鼠標(biāo)雙擊下載好的安裝程序進(jìn)行安裝,如果彈出安全警告,點(diǎn)擊“運(yùn)行”按鈕即可,如圖2-5所示。圖2-5Step7:點(diǎn)擊“Next”按鈕,如圖2-6所示。圖2-6Step8:點(diǎn)擊“IAgree”按鈕,表示同意該軟件的使用協(xié)議,如圖2-7所示。圖2-7Step9:選擇“JustMe(recommended)”單選項(xiàng),點(diǎn)擊“Next”按鈕,如圖2-8所示。圖2-8Step10:選擇安裝路徑。這里選擇默認(rèn)路徑即可,點(diǎn)擊“Next”按鈕,如圖2-9所示。圖2-9Step11:勾選圖2-10中框住的復(fù)選框,然后點(diǎn)擊“Install”按鈕。圖2-10Step12:開始安裝,等進(jìn)度條走完以后,點(diǎn)擊“Next”按鈕,如圖2-11所示。圖2-11Step13:繼續(xù)點(diǎn)擊“Next”按鈕,如圖2-12所示。圖2-12Step14:圖2-13所示兩個(gè)復(fù)選框表示是否打開Anaconda的使用手冊(cè)和對(duì)Anaconda進(jìn)行一些初步設(shè)置,可以勾選,也可以取消勾選。如果取消勾選就不會(huì)打開了。然后點(diǎn)擊“Finish”按鈕。圖2-13Step15:在計(jì)算機(jī)的開始菜單中會(huì)看到如圖2-14所示的幾個(gè)新添加的程序,表示Python已經(jīng)安裝好了,選擇“JupyterNotebook(anaconda3)”,會(huì)彈出一個(gè)黑框,按下Enter鍵,會(huì)提示你選擇用哪個(gè)瀏覽器打開,建議選擇Chrome瀏覽器。如果沒有Chrome瀏覽器,則可以先下載安裝一個(gè)。圖2-14如果沒有出現(xiàn)JupyterNotebook(anaconda3),只有AnacondaPromt(anaconda3),則說明安裝失敗了,主要原因是安裝包和系統(tǒng)某些文件不兼容。這時(shí)需要將已經(jīng)安裝的程序卸載重裝,如果之前計(jì)算機(jī)中已經(jīng)安裝過Python,也一并進(jìn)行卸載。Step16:當(dāng)你看到如圖2-15所示界面出現(xiàn)時(shí),表示Anaconda已經(jīng)安裝好了。圖2-152.MacOS系統(tǒng)安裝在MacOS系統(tǒng)中安裝Anaconda的具體流程如下。Step1:選擇MacOS版本下的“64-BitGraphicalInstaller(435MB)”,如圖2-16所示。在該步驟之前的操作與在Windows系統(tǒng)中的操作一致。圖2-16Step2:下載完成以后,雙擊打開,如果有彈出如圖2-17所示的提示框就點(diǎn)擊“繼續(xù)”按鈕,如果沒有彈出就直接進(jìn)入下一步。圖2-17Step3:點(diǎn)擊“繼續(xù)”按鈕,如圖2-18所示。圖2-18Step4:閱讀軟件許可協(xié)議,點(diǎn)擊“繼續(xù)”按鈕即可,如圖2-19所示。圖2-19Step5:同意軟件許可協(xié)議,點(diǎn)擊“繼續(xù)”按鈕即可,如圖2-20所示。圖2-20Step6:選擇安裝位置,一般選擇默認(rèn)路徑,點(diǎn)擊“安裝”按鈕,如圖2-21所示。圖2-21Step7:彈出一頁廣告,提示你可以下載PyCharm,直接點(diǎn)擊“繼續(xù)”按鈕進(jìn)入下一步,如圖2-22所示。圖2-22Step8:點(diǎn)擊“同意”按鈕,如圖2-23所示。圖2-23Step9:等進(jìn)度條走完以后點(diǎn)擊“關(guān)閉”按鈕,如圖2-24所示。圖2-24Step10:等安裝完成以后,會(huì)在Mac的啟動(dòng)臺(tái)看到Anaconda-Navigator這個(gè)軟件,點(diǎn)擊打開,如圖2-25所示。圖2-25Step11:點(diǎn)擊JupyterNotebook下方的Launch,表示啟動(dòng)Notebook,這時(shí)就會(huì)出現(xiàn)和Windows系統(tǒng)中一樣的界面,表示整個(gè)流程安裝完成,如圖2-26所示。圖2-262.2.2IDE與IDLE下面介紹一下程序編寫的步驟:編寫代碼→編譯代碼→調(diào)試代碼在程序運(yùn)行的過程中,我們首先需要一個(gè)編輯器來編寫代碼;編寫完以后需要一個(gè)編譯器把代碼編譯給計(jì)算機(jī),讓計(jì)算機(jī)去執(zhí)行;代碼在運(yùn)行過程中難免會(huì)出現(xiàn)一些錯(cuò)誤,這時(shí)就需要調(diào)試器去調(diào)試代碼。IDE(IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境)是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,該程序一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。IDE包含了程序編寫過程中需要用到的所有工具,所以我們?cè)诰帉懗绦驎r(shí)一般都會(huì)選擇使用IDE。IDLE是IDE的一種,也是最簡(jiǎn)單、最基礎(chǔ)的一種IDE。當(dāng)然,IDE不止有一種IDLE,還有VisualStudio(VS)、PyCharm、Xcode、Spyder、JupyterNotebook等。在數(shù)據(jù)分析領(lǐng)域,大家用得比較多的是JupyterNotebook,所以本書也選擇使用JupyterNotebook。2.3JupyterNotebook介紹2.3.1新建JupyterNotebook文件在開始界面選擇JupyertNotebook,如圖2-27所示。圖2-27打開JupyterNotebook,點(diǎn)擊右上角的“New”按鈕,我們這里創(chuàng)建的是Python文件,所以在彈出的下拉菜單中選擇“Python3”,你也可以選擇“TextFile”來創(chuàng)建一個(gè)TXT文件,如圖2-28所示。圖2-28當(dāng)你看到如圖2-29所示界面時(shí),就表示新建了一個(gè)JupyerNotebook文件。圖2-292.3.2運(yùn)行你的第一段代碼在代碼框中輸入一段代碼print("helloworld"),然后點(diǎn)擊“Run”按鈕,或者按下Ctrl+Enter組合鍵,就會(huì)輸出helloworld,表示這段代碼運(yùn)行成功了。當(dāng)你想換一個(gè)代碼框輸入代碼時(shí),則可以點(diǎn)擊“+”號(hào)新增代碼框,如圖2-30所示。圖2-302.3.3重命名JupyterNotebook文件當(dāng)新建一個(gè)JupyterNotebook文件時(shí),該文件名默認(rèn)為Untitled,這與Excel中文件名默認(rèn)為工作簿類似,可以選擇“File>Rename”命令對(duì)該文件進(jìn)行重命名,如圖2-31所示。圖2-312.3.4保存JupyterNotebook文件代碼寫好了,文件名也改好了,這時(shí)就可以對(duì)該代碼文件進(jìn)行保存了。選擇“File>SaveandCheckpoint”命令保存文件,如圖2-32所示。這種方法會(huì)將文件保存到默認(rèn)路徑,且文件格式也默認(rèn)為.ipynb。.ipynb格式是JupyterNotebook的專屬文件格式。圖2-32我們可以選擇“Downloadas”命令對(duì)文件進(jìn)行保存,相當(dāng)于Excel中的“另存為”命令,你可以自己選擇保存路徑以及保存格式,如圖2-33所示。圖2-332.3.5導(dǎo)入本地JupyterNotebook文件當(dāng)你收到一個(gè).ipynb文件時(shí),如何在電腦中打開該文件呢?這時(shí)可以點(diǎn)擊“Upload”按鈕,找到文件所在位置,從而將文件加載到電腦的JupyterNotebook中,如圖2-34所示。圖2-34這個(gè)功能和Excel中的“打開”命令是類似的,如圖2-35所示。圖2-352.3.6JupyterNotebook與MarkdownJupyterNotebook的代碼框默認(rèn)為Code模式,即是用于編程的;你也可以切換到Markdown模式,這時(shí)代碼框就只是一個(gè)文本框,這個(gè)文本框的內(nèi)容是支持Markdown語法的,如圖2-36所示。圖2-36當(dāng)你在做分析時(shí),可以利用Markdown寫下分析結(jié)果,這也是JupyterNotebook受到廣大數(shù)據(jù)從業(yè)者喜歡的一個(gè)原因,如圖2-37所示。圖2-372.4基本概念2.4.1數(shù)數(shù)就是我們?nèi)粘I钪杏玫降臄?shù)字,在Python中比較常用的是整數(shù)和浮點(diǎn)數(shù)兩種,如表2-1所示。表2-1我們可以通過有沒有小數(shù)點(diǎn)來判斷一個(gè)數(shù)字是整數(shù)還是浮點(diǎn)數(shù),例如,66是整數(shù),66.0是浮點(diǎn)數(shù)。2.4.2變量變量即變化的量,可以把它理解成一個(gè)容器,這個(gè)容器里可以存放(存儲(chǔ))各種東西(數(shù)據(jù)),里面的東西是可以變化的。在計(jì)算機(jī)中有很多個(gè)用來存放不同數(shù)據(jù)的容器,為了區(qū)分不同的容器,我們需要給這些容器起名字,也就是變量名,可以通過變量名來訪問變量。比如,圖2-38所示的4瓶罐頭就是4個(gè)容器,即4個(gè)變量,我們依次給它們?nèi)∶麨辄S桃罐頭、草莓罐頭、桔子罐頭、菠蘿罐頭。這樣通過變量名就可以獲取到具體是哪個(gè)變量。圖2-38變量名就和我們起名字一樣,是有一定講究的,在Python中定義變量名時(shí),需要遵循以下原則。?變量名必須以字母或下畫線開始,名字中間只能由字母、數(shù)字和下畫線“_”組成。?變量名的長(zhǎng)度不得超過255個(gè)字符。?變量名在有效的范圍內(nèi)必須是唯一的。?變量名不能是Python中的關(guān)鍵字。Python中的關(guān)鍵字如下。變量名是區(qū)分大小寫的,也就是Var和var代表兩個(gè)不同的變量。2.4.3標(biāo)識(shí)符標(biāo)識(shí)符用于標(biāo)識(shí)某樣?xùn)|西的名字,在Python中用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、文件名、類名、對(duì)象名等。標(biāo)識(shí)符的命名需要遵循的規(guī)則與變量名命名遵循的規(guī)則一致。2.4.4數(shù)據(jù)類型Python中的數(shù)據(jù)類型主要有數(shù)和字符串兩種,其中數(shù)包括整型和浮點(diǎn)型。可以使用type()函數(shù)來看查具體值的數(shù)據(jù)類型。需要注意的是,下面代碼中的“---”為分隔符,該分隔符上面為輸入的代碼,下面為代碼的運(yùn)行結(jié)果,該規(guī)則適用于第2章。1是整型,type(1)的運(yùn)行結(jié)果為int。1.0是浮點(diǎn)型,type(1.0)的運(yùn)行結(jié)果為float。"helloworld"是字符串,type("helloworld")的運(yùn)行結(jié)果為str。2.4.5輸出與輸出格式設(shè)置在Python中我們利用print()函數(shù)進(jìn)行輸出。有時(shí)需要設(shè)置輸出格式,可以使用str.format()方法。其中,str是一個(gè)字符串,將format里的內(nèi)容填充到str字符串的{}中,常用的主要有以下幾種形式。1.一對(duì)一填充2.多對(duì)多填充3.浮點(diǎn)數(shù)置.2f表示以浮點(diǎn)型展示,且輸出保留小數(shù)點(diǎn)后兩位,這里的數(shù)字2表示輸出后保留的小數(shù)點(diǎn)位數(shù),讀者可以根據(jù)需要進(jìn)行設(shè)置。4.百分?jǐn)?shù)設(shè)置.2%表示以百分比的形式展示,且輸出保留小數(shù)點(diǎn)后兩位,這里的數(shù)字2表示輸出后保留的小數(shù)點(diǎn)位數(shù),讀者可以根據(jù)需要進(jìn)行設(shè)置。2.4.6縮進(jìn)與注釋1.縮進(jìn)我們把代碼行首的空白部分稱為縮進(jìn),縮進(jìn)的目的是為了識(shí)別代碼塊,即讓程序知道應(yīng)該運(yùn)行哪一部分。比如if條件語句,縮進(jìn)是為了讓程序知道當(dāng)條件滿足時(shí)應(yīng)該執(zhí)行哪一塊語句。在其他語言中一般用花括號(hào){}表示縮進(jìn)。行首只要有空格就算縮進(jìn),不管有幾個(gè),但是通常來說都是以4個(gè)空格作為縮進(jìn)的,這樣也方便其他人閱讀代碼。Python中的函數(shù)、條件語句、循環(huán)語句中的語句塊都需要縮進(jìn),如圖2-39所示。圖2-392.注釋注釋是對(duì)代碼起到說明的作用,并不真正運(yùn)行。單行注釋以“#”號(hào)開頭。多行注釋可以用多個(gè)“#”號(hào),還有“'''”和“"""”。2.5字符串2.5.1字符串概念字符串是由零個(gè)或多個(gè)字符組成的有限串行,用單引號(hào)或者雙引號(hào)括起來,符號(hào)是str(string的縮寫)。下面這些都是字符串。2.5.2字符串連接字符串的連接是一個(gè)比較常見的需求,比如將姓和名進(jìn)行連接。直接使用“+”操作符可以將兩個(gè)或者兩個(gè)以上的字符串進(jìn)行連接。2.5.3字符串復(fù)制有時(shí)我們需要把一個(gè)字符串重復(fù)多遍,比如你想說“Python真強(qiáng)大”,現(xiàn)在不是流行重要的事情說3遍嗎,那么你要把“Ppython真強(qiáng)大”這句話重復(fù)3遍,該怎么做呢?可以使用“*”操作符,對(duì)字符串進(jìn)行重復(fù)。上面代碼是將字符串重復(fù)3遍,*3就可以。你可以根據(jù)自己的需要,重復(fù)多遍。2.5.4字符串長(zhǎng)度手機(jī)號(hào)、身份證號(hào)、姓名都是一個(gè)字符串,我們想要知道這些字符串的長(zhǎng)度,可以利用len()來獲取字符串長(zhǎng)度。2.5.5字符串查找字符串查找是指查找某一個(gè)字符串是否包含在另一個(gè)字符串中,比如你知道一個(gè)用戶名,想知道這個(gè)用戶是不是測(cè)試賬號(hào)(測(cè)試賬號(hào)的判斷依據(jù)是名字中包含“測(cè)試”兩字),那么只需要在名字中查找"測(cè)試"這個(gè)字符串即可。如果查找到,則說明該用戶是測(cè)試賬號(hào);如果查找不到,則說明不是測(cè)試賬號(hào)。用in或者notin兩種方法都可以。除了in或notin,我們還可以用find()方法,當(dāng)用find()來查找某一字符是否存在于某個(gè)字符串中時(shí),如果存在則返回該字符的具體位置,如果不存在則返回-1。注意:因Python中位置是從0開始數(shù)的,所以第3位就是2。2.5.6字符串索引字符串索引是指通過字符串中值所處的位置對(duì)值進(jìn)行選取。需要注意的是,字符串中的位置是從0開始的。獲取字符串中第1個(gè)位置的值。獲取字符串中第4個(gè)位置的值。獲取字符串中第2個(gè)位置到第4個(gè)位置之間的值,且不包含第4個(gè)位置的值。獲取字符串中第1個(gè)位置到第4個(gè)位置之間的值,且不包含第4個(gè)位置的值,第1個(gè)位置0可以省略不寫。獲取字符串中第7個(gè)位置到最后一位之間的值,最后一位可以省略不寫。獲取字符串中最后一位的值。我們把上面這種通過具體某一個(gè)位置獲取該位置的值的方式稱為普通索引;通過某一位置區(qū)間獲取該位置區(qū)間內(nèi)的值的方式稱為切片索引。2.5.7字符串分隔字符串分隔是將一個(gè)字符按照某個(gè)分隔符進(jìn)行分隔,最后將分隔后的值以列表的形式返回,用到的是split()方法。2.5.8字符刪除字符刪除用到的方法是strip(),該方法用來移除字符串首尾的指定字符,默認(rèn)移除字符串首尾的空格或換行符。2.6數(shù)據(jù)結(jié)構(gòu)——列表2.6.1列表概念列表(list)是用來存儲(chǔ)一組有序數(shù)據(jù)元素的數(shù)據(jù)結(jié)構(gòu),元素之間用逗號(hào)分隔。列表中的數(shù)據(jù)元素應(yīng)該包括在方括號(hào)中,而且列表是可變的數(shù)據(jù)類型。一旦創(chuàng)建了一個(gè)列表,就可以添加、刪除或者搜索列表中的元素。在方括號(hào)中的數(shù)據(jù)可以是int型,也可以是str型。2.6.2新建一個(gè)列表新建列表的方法比較簡(jiǎn)單,直接將數(shù)據(jù)元素用方括號(hào)括起來即可。1.建立一個(gè)空列表當(dāng)方括號(hào)中沒有任何數(shù)據(jù)元素時(shí),列表就是一個(gè)空列表。2.建立一個(gè)int類型列表當(dāng)方括號(hào)的數(shù)據(jù)元素全部為int類型時(shí),這個(gè)列表就是int類型列表。3.建立一個(gè)str類型列表當(dāng)方括號(hào)中的數(shù)據(jù)元素全部為str類型時(shí),這個(gè)列表就是str類型列表。4.建立一個(gè)int+str類型列表當(dāng)方括號(hào)中的數(shù)據(jù)元素既有int類型,又有str類型時(shí),這個(gè)列表就是int+str類型。2.6.3列表復(fù)制列表的復(fù)制和字符串的復(fù)制類似,也是使用“*”操作符。2.6.4列表合并列表的合并就是將兩個(gè)現(xiàn)有的list合并在一起,主要有兩種實(shí)現(xiàn)方式:一種是利用“+”操作符,這個(gè)和字符串的連接一致;另外一種是用extend()方法。直接將兩個(gè)列表用“+”操作符連接即可達(dá)到合并的目的,列表的合并是有先后順序的。將列表B合并到列表A中,用到的方法是A.extend(B);將列表A合并到列表B中,用到的方法是B.extend(A)。2.6.5向列表中插入新的元素列表是可變的,也就是當(dāng)新建一個(gè)列表以后還可以對(duì)這個(gè)列表進(jìn)行操作,這里對(duì)列表進(jìn)行插入數(shù)據(jù)元素的操作,主要有append()和insert()兩種方法。這兩種方法都會(huì)直接改變?cè)斜?,不?huì)直接輸出結(jié)果,需要調(diào)用原列表的列表名來獲取插入新元素以后的列表。append()是在列表末尾插入新的數(shù)據(jù)元素。insert()是在列表的指定位置插入新的數(shù)據(jù)元素。2.6.6獲取列表中值出現(xiàn)的次數(shù)獲取某個(gè)值在列表中出現(xiàn)的次數(shù),利用的是count()方法。全校成績(jī)排名前5的5個(gè)學(xué)生對(duì)應(yīng)的班級(jí)組成一個(gè)列表,你想看一下你所在的班級(jí)(一班)有幾個(gè)人在這個(gè)列表中。2.6.7獲取列表中值出現(xiàn)的位置獲取值出現(xiàn)的位置,就是看該值位于列表的哪里。已知公司的所有銷售員的業(yè)績(jī)是按降序排列的,你想看一下你的業(yè)績(jī)排在第幾位。上面代碼的輸出結(jié)果是3,也就是你的業(yè)績(jī)排在第4位。2.6.8獲取列表中指定位置的值獲取指定位置的值利用的方法和字符串索引是一致的,主要有普通索引和切片索引兩種。1.普通索引普通索引是獲取某一特定位置的數(shù)。2.切片索引切片索引是獲取某一位置區(qū)間內(nèi)的數(shù)。2.6.9對(duì)列表中的值進(jìn)行刪除對(duì)列表中的值進(jìn)行刪除時(shí),有pop()和remove()兩種方法。pop()方法是根據(jù)列表中的位置進(jìn)行刪除,也就是刪除指定位置的值。remove()方法是根據(jù)列表中的元素進(jìn)行刪除,就是刪除某一個(gè)元素。2.6.10對(duì)列表中的值進(jìn)行排序?qū)α斜碇械闹蹬判蚶玫氖莝ort()方法,sort()默認(rèn)采用升序排列。2.7數(shù)據(jù)結(jié)構(gòu)——字典2.7.1字典概念字典(dict)是一種鍵值對(duì)的結(jié)構(gòu),類似于你通過聯(lián)系人名字查找地址和聯(lián)系人詳細(xì)情況的地址簿,即我們把鍵(名字)和值(詳細(xì)情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個(gè)人恰巧同名,就無法找到正確的信息。鍵值對(duì)在字典中以這樣的方式標(biāo)記:{key1:value1,key2:value2}。注意,它們的鍵值用冒號(hào)分隔,而各個(gè)對(duì)用逗號(hào)分隔,所有這些都包括在花括號(hào)中。2.7.2新建一個(gè)字典先創(chuàng)建一個(gè)空的字典,然后向該字典內(nèi)輸入值。下面新建一個(gè)通訊錄。將值直接以鍵值對(duì)的形式傳入字典中。將鍵值以列表的形式存放在元組中,然后用dict進(jìn)行轉(zhuǎn)換。2.7.3字典的keys()、values()和items()方法keys()方法用來獲取字典內(nèi)的所有鍵。values()方法用來獲取字典內(nèi)的所有值。items()方法用來得到一組一組的鍵值對(duì)。2.8數(shù)據(jù)結(jié)構(gòu)——元組2.8.1元組概念元組與列表類似,不同之處在于元組的元素不能修改。元組使用圓括號(hào),列表使用方括號(hào)。2.8.2新建一個(gè)元組元組的創(chuàng)建比較簡(jiǎn)單,直接將一組數(shù)據(jù)元素用圓括號(hào)括起來即可。2.8.3獲取元組的長(zhǎng)度獲取元組長(zhǎng)度的方法與獲取列表長(zhǎng)度的方法是一致的,都是len()方法。2.8.4獲取元組內(nèi)的元素獲取元組內(nèi)元素的方法也主要分為普通索引和切片索引兩種。1.普通索引2.切片索引2.8.5元組與列表相互轉(zhuǎn)換元組和列表是兩種很相似的數(shù)據(jù)結(jié)構(gòu),兩者經(jīng)?;ハ噢D(zhuǎn)換。使用list()方法將元組轉(zhuǎn)化為列表。使用tuple()方法將列表轉(zhuǎn)化為元組。2.8.6zip()函數(shù)zip()函數(shù)用于將可迭代的對(duì)象(列表、元組)作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。常與for循環(huán)一起搭配使用。當(dāng)可迭代對(duì)象是列表時(shí):當(dāng)可迭代對(duì)象是元組時(shí):2.9運(yùn)算符2.9.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符就是常規(guī)的加減乘除類運(yùn)算,如表2-2所示。表2-22.9.2比較運(yùn)算符比較運(yùn)算符就是常規(guī)的大于、等于、小于之類的,主要是用來做比較的,返回True或False的結(jié)果,如表2-3所示。表2-32.9.3邏輯運(yùn)算符邏輯運(yùn)算符就是與或非,如表2-4所示。表2-42.10循環(huán)語句2.10.1for循環(huán)for循環(huán)用來遍歷(挨個(gè)調(diào)用)任何序列的項(xiàng)目,這個(gè)序列可以是一個(gè)列表,也可以是一個(gè)字符串,然后針對(duì)這個(gè)序列中的每個(gè)項(xiàng)目去執(zhí)行相應(yīng)的操作。一個(gè)數(shù)據(jù)分析師的必修課主要有Excel、SQL、Python和統(tǒng)計(jì)學(xué),要想成為一名數(shù)據(jù)分析師,那么這4門課是必須要學(xué)的,且學(xué)習(xí)順序也應(yīng)該是先Excel,再SQL,然后Python,最后是統(tǒng)計(jì)學(xué)。你在依次學(xué)習(xí)這4門課時(shí)就是一個(gè)for循環(huán)。2.10.2while循環(huán)while循環(huán)用來循環(huán)執(zhí)行某程序,即當(dāng)條件滿足時(shí),一直執(zhí)行某程序,直到條件不滿足時(shí),終止程序。網(wǎng)上有一篇帖子名為《7周成為數(shù)據(jù)分析師》,只要你按照課程表學(xué)習(xí)7周,就算是一名數(shù)據(jù)分析師了。這里以你是否已經(jīng)學(xué)習(xí)了7周作為判斷條件,如果學(xué)習(xí)時(shí)間沒有達(dá)到7周,那么就需要一直學(xué),直到學(xué)習(xí)時(shí)間大于7周,就可以停止學(xué)習(xí),然后去找工作(見圖2-40)。圖2-40在寫while循環(huán)時(shí),一定要注意代碼的縮進(jìn),否則容易陷入死循環(huán)。2.11條件語句2.11.1if條件語句if條件語句是程序先去判斷某個(gè)條件是否滿足,如果該條件滿足,則執(zhí)行判斷語句后的程序,if條件后面的程序需要首行縮進(jìn)。如果你好好學(xué)習(xí)數(shù)據(jù)分析師的必備技能,那么就可以找到一份數(shù)據(jù)分析相關(guān)的工作,但是如果你不好好學(xué)習(xí),就很難找到一份數(shù)據(jù)分析相關(guān)的工作。我們用1表示好好學(xué)習(xí),0表示沒有好好學(xué)習(xí),并賦初始值為1。判斷條件為是否好好學(xué)習(xí)(見圖2-41)。圖2-41判斷條件為是否沒有好好學(xué)習(xí)(見圖2-42)。圖2-422.11.2else語句else語句是if語句的補(bǔ)充,if條件只說明了當(dāng)條件滿足時(shí)程序去做什么,沒有說明當(dāng)條件不滿足時(shí)程序去做什么?而else語句是用來說明當(dāng)條件不滿足時(shí),程序去做什么(見圖2-43)。圖2-43判斷條件為是否好好學(xué)習(xí):判斷條件為是否沒有好好學(xué)習(xí):2.11.3elif語句elif語句可以近似理解成else_if,前面提到的if語句、else語句都僅可以對(duì)一條語句進(jìn)行判斷,但有時(shí)需要對(duì)多條語句進(jìn)行判斷,可以使用elif語句。elif中可以有else語句,也可以沒有,但是必須有if語句,具體執(zhí)行順序是先判斷if后面的條件是否滿足。如果滿足則運(yùn)行if為真時(shí)的程序,結(jié)束循環(huán);如果if條件不滿足就去判斷elif語句,會(huì)有多個(gè)elif語句,但是只有0個(gè)或1個(gè)elif語句會(huì)被執(zhí)行。比如,你要猜某個(gè)人考試考了多少分,該怎么猜?先判斷是否及格(60分為準(zhǔn))。如果不及格,分?jǐn)?shù)范圍直接猜一個(gè)小于60分的就可以;如果及格了,則去判斷到底是在哪個(gè)分?jǐn)?shù)段(見圖2-44)。圖2-442.12函數(shù)函數(shù)是在一個(gè)程序中可以被重復(fù)使用的一段程序。這段程序是由一塊語句和一個(gè)名稱組成的,只要函數(shù)定義好,就可以在程序中通過該名字調(diào)用執(zhí)行這段程序。2.12.1普通函數(shù)普通函數(shù)一般由函數(shù)名(必需)、參數(shù)、語句塊(必需)、return、變量幾部分組成。定義函數(shù)語法:定義函數(shù)使用的關(guān)鍵詞是def,函數(shù)名后面的括號(hào)里放入?yún)?shù)(參數(shù)可以為空),參數(shù)后面需要以冒號(hào)結(jié)尾,語句塊需要縮進(jìn)4個(gè)空格,語句塊是函數(shù)具體要做的事情。定義一個(gè)名為learn_python()的函數(shù):上述的函數(shù)利用learn_python()這個(gè)函數(shù)名,調(diào)用了多次learn_python對(duì)應(yīng)的語句塊。函數(shù)的參數(shù)有形參(形式參數(shù))和實(shí)參(實(shí)際參數(shù))兩種,在定義函數(shù)時(shí)使用的參數(shù)是形參,比如上面的location;但是在調(diào)用函數(shù)時(shí)傳遞的參數(shù)是實(shí)參,比如上面的"地鐵"。上面語句塊中直接執(zhí)行了print()操作,沒有返回值,我們也可以利用return對(duì)語句塊的運(yùn)行結(jié)果進(jìn)行返回。定義一個(gè)含有return的函數(shù):這次調(diào)用函數(shù)以后,沒有直接進(jìn)行print()操作,而是將運(yùn)行結(jié)果利用return進(jìn)行返回。定義一個(gè)含有多個(gè)參數(shù)的函數(shù):2.12.2匿名函數(shù)匿名函數(shù),顧名思義就是沒有名字的函數(shù),也就是省略了def定義函數(shù)的過程。lambda只是一個(gè)表達(dá)式,沒有函數(shù)體,lambda的具體使用方法如下。arg1、arg2、arg3表示具體的參數(shù),expression表示參數(shù)要執(zhí)行的操作?,F(xiàn)在我們分別利用普通函數(shù)和匿名函數(shù)兩種方式來建立一個(gè)兩數(shù)相乘的函數(shù),比較一下兩者的區(qū)別。普通函數(shù)匿名函數(shù)是不是匿名函數(shù)要比普通函數(shù)簡(jiǎn)潔很多,也是比較常用的,讀者需要熟練掌握。2.13高級(jí)特性2.13.1列表生成式現(xiàn)在有一個(gè)列表,你需要對(duì)該列表中的每個(gè)值求平方,然后將結(jié)果組成一個(gè)列表。我們先看看普通方法和列表生成式怎么實(shí)現(xiàn)。普通方法列表生成式上面需求比較簡(jiǎn)單,你可能沒有領(lǐng)略到列表生成式的妙用。我們?cè)賮砜匆恍┥晕?fù)雜的需求?,F(xiàn)在有兩個(gè)列表,需要把這兩個(gè)列表中的值兩兩組合,分別用普通方法和列表生成式實(shí)現(xiàn)一下。普通方法列表生成式上面的需求如果用普通方法,則需要嵌套兩個(gè)for循環(huán);如果用列表生成式,則只需要一行代碼就可以搞定。如果數(shù)據(jù)量很小,for循環(huán)嵌套的運(yùn)行速度還可以。但是如果數(shù)據(jù)量很大,for循環(huán)嵌套太多程序運(yùn)行就會(huì)變得很慢。2.13.2map()函數(shù)map()函數(shù)的表現(xiàn)形式為map(function,agrs),表示對(duì)序列args中的每個(gè)值進(jìn)行function操作,最終得到一個(gè)結(jié)果序列。map()函數(shù)生成的結(jié)果序列不會(huì)直接把全部結(jié)果顯示出來,要想獲取到結(jié)果,則需要使用for循環(huán)遍歷。也可以使用list()方法,將結(jié)果值生成一個(gè)列表。2.14庫庫是升級(jí)版的函數(shù),我們前面介紹過,函數(shù)是在一段程序中可以通過函數(shù)名進(jìn)行多次調(diào)用的一段程序,但是必須在定義函數(shù)的這段程序中調(diào)用。如果換到別的程序中,該函數(shù)就不起作用了。庫之所以是升級(jí)版的函數(shù),是因?yàn)樵谌我獬绦蛑卸伎梢酝ㄟ^庫名去調(diào)用該庫對(duì)應(yīng)的程序。要調(diào)用函數(shù),首先需要定義一個(gè)函數(shù),同理,要調(diào)用庫,首先需要導(dǎo)入庫,導(dǎo)入庫的方法主要有以下兩種。數(shù)據(jù)分析領(lǐng)域用得比較多的3個(gè)庫分別是Numpy、Pandas、matplotlib,Python中還有很多類似的庫,正是因?yàn)橛羞@樣多的庫存在,才使Python變得很簡(jiǎn)單,受到越來越多人的歡迎。而我們本書主要使用的是openpyxl庫,所以本書有很多代碼是需要導(dǎo)入openpyxl的。2.14.1安裝一個(gè)新庫Anaconda雖然自帶了很多常用庫,但是有時(shí)候我們使用的庫可能沒有自帶,就需要自己進(jìn)行安裝。自己安裝庫的命令如下。?xxx表示你要安裝的具體庫名。那么應(yīng)該在哪里運(yùn)行上述命令呢?對(duì)Windows端,需要在AnacondaPrompt中運(yùn)行,打開開始界面,然后搜索AnacondaPrompt,如圖2-45所示。圖2-45打開以后就會(huì)出現(xiàn)如圖2-46所示的黑框。圖2-46然后就可以在黑框里輸入命令,比如我們這里要安裝openpyxl庫,那么就可以輸入如圖2-47所示命令,按Enter鍵。圖2-47對(duì)MacOS端,終端就是AnacondaPrompt,直接在終端中輸入上述命令即可。2.14.2卸載一個(gè)庫有安裝就會(huì)有卸載,有時(shí)我們不需要某個(gè)庫了,就可以將其卸載,卸載的命令如下。?xxx表示要卸載的具體庫名,運(yùn)行卸載命令的地方與安裝命令的地方一致。第2部分
格式設(shè)置第3章
用Python對(duì)報(bào)表進(jìn)行基本操作3.1打開已有的工作簿有一個(gè)工作簿dataset,現(xiàn)在需要打開這個(gè)工作簿,對(duì)其進(jìn)行操作。dataset工作簿中的數(shù)據(jù)內(nèi)容如圖3-1所示。圖3-1Excel實(shí)現(xiàn)在Excel中要打開一個(gè)工作簿很簡(jiǎn)單,直接用鼠標(biāo)雙擊Excel軟件圖標(biāo)即可。Python實(shí)現(xiàn)在Python中要打開一個(gè)工作簿,可以使用openpyxl庫中的load_workbook()函數(shù),load_workbook()會(huì)把整個(gè)工作簿中的所有內(nèi)容都導(dǎo)入進(jìn)來,具體實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼會(huì)得到如下結(jié)果。這就表示已經(jīng)將dataset工作簿中的內(nèi)容全部導(dǎo)入Python中。除了使用openpyxl,還可以使用Pandas,讀取dataset文件的實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼會(huì)得到如圖3-2所示結(jié)果。圖3-2可以看到,已經(jīng)將工作簿dataset的第一個(gè)Sheet中的內(nèi)容讀取進(jìn)來了。既然load_workbook()和read_excel()都可以對(duì)文件進(jìn)行讀取,那兩者有什么區(qū)別呢??使用read_excel()讀取的數(shù)據(jù)可以實(shí)時(shí)顯示在界面上,而load_workbook()不可以。?對(duì)有多個(gè)Sheet的工作簿,load_workbook()可以一次性全部讀取,而read_excel()一次只能讀取其中一個(gè)Sheet,且默認(rèn)讀取第一個(gè)Sheet中的內(nèi)容。如果要讀取其他Sheet中的內(nèi)容,則-通過參數(shù)sheet_name指明要讀取的Sheet名。我們讀取dataset工作簿中sheet_name為深圳的數(shù)據(jù),代碼如下。使用Pandas讀取數(shù)據(jù)不是本書重點(diǎn),關(guān)于更多Pandas操作的內(nèi)容,可以閱讀《對(duì)比Excel,輕松學(xué)習(xí)Python數(shù)據(jù)分析》一書。3.2創(chuàng)建新的工作簿大多數(shù)時(shí)候我們是對(duì)一個(gè)已有的工作簿進(jìn)行操作處理,但有時(shí)也會(huì)需要自己新建一個(gè)工作簿。Excel實(shí)現(xiàn)在Excel中新建一個(gè)工作簿,直接用鼠標(biāo)雙擊Excel軟件的圖標(biāo),就會(huì)自動(dòng)創(chuàng)建一個(gè)新工作簿。Python實(shí)現(xiàn)在Python中,可以使用如下代碼來創(chuàng)建一個(gè)新工作簿。Workbook()表示聲明一個(gè)新的工作簿,并將這個(gè)工作簿賦值給wb,然后將wb保存到C盤的Users文件夾下面,這時(shí)在該文件夾中就會(huì)有一個(gè)新的名字為工作簿1的文件。一般我們會(huì)將新的工作簿保存至本地,保存工作簿的代碼為wb.save(),在括號(hào)中指明要保存的具體路徑。上面的代碼只是新建了一個(gè)空的工作簿,當(dāng)我們想要在空的工作簿中插入值時(shí),可以通過如下代碼實(shí)現(xiàn)。3.2.1在創(chuàng)建工作簿時(shí)插入數(shù)據(jù)在創(chuàng)建一個(gè)新工作簿時(shí),默認(rèn)會(huì)創(chuàng)建一個(gè)Sheet。要在工作簿中插入數(shù)據(jù)時(shí),就是在Sheet中輸入數(shù)據(jù)。在插入具體數(shù)據(jù)之前,需要先激活Sheet,即wb.active。將激活后的Sheet賦值給ws,接下來對(duì)ws的操作就是對(duì)這個(gè)Sheet的操作。ws['A1']表示ws這個(gè)Sheet中的A1單元格,我們給其賦值1;ws['A2']表示ws這個(gè)Sheet中的A2單元格,我們給其賦值2;ws['A3']表示ws這個(gè)Sheet中的A3單元格,我們給其賦值3。賦值完成后,將這個(gè)工作簿保存到指定文件夾中。接下來,從文件夾中打開cell_file.xlsx文件,顯示如圖3-3所示。圖3-33.2.2對(duì)單個(gè)單元格賦值在對(duì)一個(gè)一個(gè)單元格進(jìn)行賦值時(shí),還有另外一種方式,具體實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼得到的cell_file_copy.xlsx文件與cell_file.xlsx文件的結(jié)果是一樣的。3.2.3對(duì)一行單元格賦值上面是對(duì)一個(gè)一個(gè)單元格進(jìn)行賦值,我們也可以一次性對(duì)一行單元格進(jìn)行賦值,具體實(shí)現(xiàn)代碼如下。要對(duì)ws這個(gè)Sheet中的一行進(jìn)行賦值,需要用到append()方法,在append()方法的括號(hào)中以列表的形式指明待賦值的這一行數(shù)據(jù)即可。從文件夾中打開cell_row.xlsx文件,顯示如圖3-4所示。圖3-43.2.4對(duì)多行進(jìn)行賦值如果我們想同時(shí)插入多行數(shù)據(jù),則可以借助for循環(huán)來實(shí)現(xiàn),具體代碼如下。同時(shí)插入多行數(shù)據(jù)的實(shí)現(xiàn)原理比較簡(jiǎn)單,就是循環(huán)執(zhí)行插入單行數(shù)據(jù)的代碼。運(yùn)行上述代碼,然后打開文件夾中的cell_for.xlsx文件,結(jié)果顯示如圖3-5所示。當(dāng)然,除了使用openpyxl庫來新建工作簿,還可以使用Pandas庫來新建工作簿。圖3-53.3Pandas與openpyxl之間的轉(zhuǎn)換通過上面導(dǎo)入工作簿的例子,讀者應(yīng)該能感受到,Pandas和openpyxl兩個(gè)庫各有優(yōu)劣,在日常工作中經(jīng)常需要同時(shí)用到這兩個(gè)庫。先用Pandas處理一部分,然后用openpyxl處理,或者先用openpyxl處理一部分,然后用Pandas處理。需要頻繁地在兩個(gè)庫之間進(jìn)行切換,而兩個(gè)庫的數(shù)據(jù)源格式又不太一樣,這就涉及兩個(gè)數(shù)據(jù)源之間的轉(zhuǎn)換。我們先利用Pandas導(dǎo)入一個(gè)pandas文件,然后新建一個(gè)openpyxl格式的空工作簿,再利用append()方法將Pandas中的數(shù)據(jù)插入空工作簿中,最后保存這個(gè)工作簿,代碼如下。在上述代碼中有一個(gè)關(guān)鍵的方法dataframe_to_rows(),這個(gè)方法是將pandas格式的數(shù)據(jù)轉(zhuǎn)化為一行一行的數(shù)據(jù),其后面括號(hào)中的index表示在轉(zhuǎn)化過程中是否需要將DataFrame表的索引列也插入Excel中,True表示需要,F(xiàn)alse表示不需要;header表示是否需要將DataFrame表的表頭(列名)也插入Excel中。一般情況下,表頭是保留的,而索引列根據(jù)實(shí)際需要來決定是否保留。如果索引列中含有關(guān)鍵信息,則需要保留;如果索引列只是單純的一列數(shù),則沒必要保留。3.4Sheet相關(guān)設(shè)置我們?cè)谇懊嬷v了,一個(gè)工作簿中會(huì)包含多個(gè)Sheet。有時(shí)也需要對(duì)其進(jìn)行相關(guān)設(shè)置。3.4.1新建一個(gè)Sheet新建了一個(gè)空工作簿以后,默認(rèn)包含一個(gè)Sheet,有時(shí)一個(gè)Sheet可能不夠用,就需要再新建幾個(gè)Sheet。Excel實(shí)現(xiàn)在Excel中,如果要新建Sheet,只需要點(diǎn)擊原Sheet后面的加號(hào)即可,每點(diǎn)擊一次就會(huì)新建一個(gè),如圖3-6所示。Python實(shí)現(xiàn)在Python中,如果要新建一個(gè)Sheet,直接對(duì)工作簿執(zhí)行create_sheet()方法即可,具體實(shí)現(xiàn)代碼如下。打開文件夾中的new_sheet.xlsx文件,顯示如圖3-7所示。圖3-6圖3-7我們也可以同時(shí)新建多個(gè)Sheet,只需要重復(fù)執(zhí)行創(chuàng)建Sheet的代碼即可。現(xiàn)在我們要新建3個(gè)Sheet,具體實(shí)現(xiàn)代碼如下。打開文件夾中的more_new_sheet.xlsx文件,顯示如圖3-8所示。圖3-8上面新建的Sheet都是以默認(rèn)的格式進(jìn)行新建的。實(shí)際上我們?cè)谛陆〞r(shí)還可以對(duì)其標(biāo)題和位置進(jìn)行設(shè)置。默認(rèn)新建的Sheet都是排在最后的,比如ws3(Sheet3)是最后新建的,就排在Sheet1、Sheet2后面。如果我們現(xiàn)在想把最后新建的Sheet放在第二的位置,并把其Sheet名字命名為“第二Sheet”,實(shí)現(xiàn)代碼如下。打開文件夾中的sort_new_sheet.xlsx文件,顯示如圖3-9所示。圖3-9有時(shí)候新建Sheet并不是完全地新建一個(gè)空白的Sheet,而是把已有的Sheet復(fù)制到新的Sheet中,這時(shí)只需要把create_sheet改成copy_worksheet即可。我們將ws2復(fù)制到ws3中,代碼如下。打開文件夾中的copy_new_sheet.xlsx文件,顯示如圖3-10所示。圖3-103.4.2對(duì)已有Sheet進(jìn)行設(shè)置上面主要介紹了如何新建Sheet,那么我們創(chuàng)建了Sheet以后,會(huì)對(duì)其進(jìn)行什么操作?第1個(gè)操作是獲取一個(gè)工作簿中的所有Sheet名,查看都有哪些Sheet。以前面的copy_new_sheet.xlsx文件為例,我們將其導(dǎo)入Python中,然后查看這個(gè)文件中有哪些Sheet,實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼,得到結(jié)果['Sheet','Sheet1','Sheet2','Sheet2Copy'],與實(shí)際情況一致。第2個(gè)操作是對(duì)Sheet進(jìn)行重命名,以及修改標(biāo)簽顏色,具體實(shí)現(xiàn)代碼如下。打開文件夾中的New_Title.xlsx文件,顯示如圖3-11所示。圖3-11第3個(gè)操作是對(duì)Sheet進(jìn)行刪除,我們先新建3個(gè)Sheet,然后將第2個(gè)Sheet刪除,具體實(shí)現(xiàn)代碼如下。打開文件夾中的remove_new_sheet.xlsx文件,顯示如圖3-12所示??梢钥吹絊heet2已被刪除。圖3-12第4章
用Python實(shí)現(xiàn)單元格選擇和字體設(shè)置4.1用Python選擇單元格選擇單元格就是選擇指定的單元格。一般對(duì)選擇的單元格進(jìn)行數(shù)據(jù)運(yùn)算或者格式調(diào)整等操作。在Excel中,要選擇指定的單元格,直接用鼠標(biāo)拖動(dòng)選中即可,我們主要介紹一下在Python中如何選擇指定單元格。4.1.1選擇單個(gè)單元格我們要選擇某一個(gè)單一的單元格,比如要選擇A1單元格,有如下兩種選擇方法。方法一:直接指明具體的單元格,代碼如下。方法二:通過行(row)、列(column)的形式來指明,代碼如下。A1單元格為第1行第1列,所以row的值和column的值均為1。4.1.2選擇多個(gè)單元格多個(gè)單元格有多種形式,一行也屬于多個(gè)單元格,比如我們要獲取第10行的單元格,可以通過如下代碼實(shí)現(xiàn)。一列也屬于多個(gè)單元格,比如我們要獲取第C列的單元格,可以通過如下代碼實(shí)現(xiàn)。多行也屬于多個(gè)單元格,比如我們要獲取第5~10行的單元格,可以通過如下代碼實(shí)現(xiàn)。多列也屬于多個(gè)單元格,比如我們要獲取第C~E列的單元格,可以通過如下代碼實(shí)現(xiàn)。多行多列也屬于多個(gè)單元格,比如我們要獲取A1:C5區(qū)域的單元格,可以通過如下代碼實(shí)現(xiàn)。Excel中字體相關(guān)的設(shè)置在“開始”選項(xiàng)卡下的“字體”組中,如圖4-1所示,主要包括基礎(chǔ)的字體類型、字號(hào)大小、字體顏色、單元格填充、邊框線等設(shè)置。圖4-14.2用Python設(shè)置Excel字體4.2.1基本字體相關(guān)設(shè)置基本字體相關(guān)設(shè)置主要有字體類型、字號(hào)大小、是否加粗、是否斜體、對(duì)齊方式、下畫線、刪除線、字體顏色等。Excel實(shí)現(xiàn)在Excel中,要實(shí)現(xiàn)上述的設(shè)置還是比較簡(jiǎn)單的,要對(duì)哪些單元格設(shè)置,只需要先選中這些單元格,然后點(diǎn)擊功能區(qū)中對(duì)應(yīng)的選項(xiàng),即可完成設(shè)置,如圖4-2所示。圖4-2Python實(shí)現(xiàn)在Python中要實(shí)現(xiàn)上述設(shè)置,需要用到Font()函數(shù),該函數(shù)的具體參數(shù)如下。?name用來說明要設(shè)置的字體類型,可選的參數(shù)值為在Excel“字體”組中下拉列表的所有值。?size表示字體的大小,可選的值為具體數(shù)值。?bold表示是否加粗,當(dāng)參數(shù)值為False時(shí)表示不加粗,為True時(shí)表示加粗。?italic表示是否斜體,當(dāng)參數(shù)值為False時(shí)表示不對(duì)字體進(jìn)行傾斜,為True時(shí)表示對(duì)字體進(jìn)行傾斜。?vertAlign表示字體的垂直對(duì)齊方式,可選的值及對(duì)應(yīng)的對(duì)齊方式如表4-1所示。表4-1?underline表示下畫線的類型,可選的值及對(duì)應(yīng)的下畫線類型如表4-2所示。表4-2?strike表示是否加刪除線,當(dāng)參數(shù)值為False時(shí)表示不加刪除線,為True時(shí)表示加刪除線。?color表示具體的字體顏色,可選值為ARGB格式的顏色值,一個(gè)顏色會(huì)有不同格式,網(wǎng)上會(huì)有不同格式之間相互轉(zhuǎn)換的工具,比如圖4-3是紅色對(duì)應(yīng)的不同格式值。圖4-3要設(shè)置什么顏色,只需要找到該顏色對(duì)應(yīng)的ARGB值即可。表4-3是常用顏色對(duì)應(yīng)的ARGB值。表4-3如果要對(duì)某個(gè)單元格進(jìn)行設(shè)置,則只需要讓這個(gè)單元格的font屬性等于Font()函數(shù),并在Font()函數(shù)中指明具體的設(shè)置參數(shù)。格式如下。新建一個(gè)工作簿,并給這個(gè)新工作簿中的A1至A8單元格賦予不同的值,然后對(duì)A1單元格設(shè)置字體類型、A2單元格設(shè)置字體大小、A3單元格設(shè)置是否加粗、A4單元格設(shè)置是否斜體、A5單元格設(shè)置垂直對(duì)齊方式、A6單元格設(shè)置下畫線類型、A7單元格設(shè)置刪除線、A8單元格設(shè)置字體顏色。具體實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼會(huì)得到如圖4-4所示結(jié)果,可以看到不同單元格被進(jìn)行了不同的設(shè)置。圖4-4需要注意的是,為了便于大家看清楚每一個(gè)設(shè)置的實(shí)現(xiàn)效果,我們對(duì)不同的單元格只進(jìn)行了一個(gè)字體相關(guān)的設(shè)置。在實(shí)際工作中,經(jīng)常需要對(duì)同一個(gè)單元格進(jìn)行多個(gè)字體相關(guān)的設(shè)置,這時(shí)只需要在Font()函數(shù)后面加多個(gè)設(shè)置參數(shù)即可。4.2.2單元格填充單元格填充主要分為兩種,一種是背景色的填充,就是單純的顏色填充,另一種是圖案的填充,就是以某種圖案對(duì)單元格進(jìn)行填充。Excel實(shí)現(xiàn)在Excel中,如果要實(shí)現(xiàn)單純的背景色填充比較簡(jiǎn)單,直接選中要填充的單元格,然后點(diǎn)擊“字體”組中的“填充顏色”圖標(biāo)旁邊的三角,在彈出的下拉菜單中選擇需要的顏色,如圖4-5所示。圖4-5如果要實(shí)現(xiàn)圖案填充,先選中要填充的單元格,然后單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“設(shè)置單元格格式”命令,如圖4-6所示。圖4-6彈出“設(shè)置單元格格式”對(duì)話框,選擇“填充”選項(xiàng)卡,然后會(huì)看到圖案填充的部分,根據(jù)需要選擇指定的圖案樣式和圖案顏色,如圖4-7所示。圖4-7Python實(shí)現(xiàn)在Python中,要對(duì)單元格進(jìn)行填充時(shí),需要用到PatternFill()函數(shù),該函數(shù)的具體參數(shù)如下。?fill_type表示填充的圖案樣式,可選的參數(shù)值有如下幾種。不同的參數(shù)值對(duì)應(yīng)的具體樣式如圖4-8所示。圖4-8常用的圖案樣式就是solid,即純色填充,沒有任何圖案。?start_color表示前景色填充,也就是具體的圖案的顏色。?end_color表示背景顏色,因?yàn)閳D案是覆蓋在單元格上方的,所以在圖案的底層還會(huì)有一個(gè)顏色,就是背景色。這個(gè)顏色值也需要是ARGB格式的。如果要對(duì)某個(gè)單元格進(jìn)行設(shè)置,則只需要讓這個(gè)單元格的fill屬性等于PatternFill()函數(shù),并在PatternFill()函數(shù)中指明具體的設(shè)置參數(shù)。格式如下。常規(guī)的操作也就是單元格的純色填充,比如要將一個(gè)單元格填充為黃色,具體實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼,A1單元格會(huì)被填充為黃色,如圖4-9所示。因?yàn)槲覀円M(jìn)行純色填充,所以fill_type選擇'solid';同時(shí)將圖案的顏色設(shè)置為黃色,也就是將start_color設(shè)置為黃色。圖4-94.2.3邊框線設(shè)置邊框線設(shè)置就是設(shè)置單元格邊框,主要包括線型及顏色兩個(gè)方面。Excel實(shí)現(xiàn)在Excel中,要對(duì)單元格的邊框線進(jìn)行設(shè)置時(shí),直接選中要設(shè)置的單元格,然后點(diǎn)擊“字體”組中“邊框”圖標(biāo)旁邊的三角,在彈出的下拉菜單中選擇合適的線型和顏色,如圖4-10所示。圖4-10Python實(shí)現(xiàn)在Python中要對(duì)單元格進(jìn)行邊框線設(shè)置,需要用到Border()函數(shù),該函數(shù)的具體參數(shù)如下。?left、right、top、bottom分別表示對(duì)一個(gè)單元格左、右、上、下四邊的邊框線進(jìn)行設(shè)置,diagonal表示對(duì)單元格的對(duì)角線進(jìn)行設(shè)置。?border_style表示線型,可選的參數(shù)值及對(duì)應(yīng)的線型如表4-4所示。表4-4?color表示線的顏色,可選參數(shù)值也需要是ARGB格式的。如果要對(duì)某個(gè)單元格進(jìn)行設(shè)置,則只需要讓這個(gè)單元格的border屬性等于Border()函數(shù),并在Border()函數(shù)中指明具體的設(shè)置參數(shù)。格式如下。我們對(duì)一個(gè)單元格的四邊分別設(shè)置不同的線型和顏色,代碼如下。運(yùn)行如上代碼會(huì)得到如圖4-11所示結(jié)果,可以看到B2單元格的四邊被設(shè)置成了不同的線型和顏色。上面代碼中,因?yàn)槲覀儧]有對(duì)單元格的對(duì)角線進(jìn)行設(shè)置,所以就可以省略設(shè)置對(duì)角線的參數(shù)diagonal。圖4-11如果我們要設(shè)置對(duì)角線,除了需要增加diagonal參數(shù),還需要增加diagonalDown、diagonalUp參數(shù)。diagonalDown參數(shù)表示對(duì)角線從左上到右下,diagonalUp參數(shù)表示對(duì)角線從左下到右上。下面我們分別對(duì)B2單元格設(shè)置從左上到右下的對(duì)角線、對(duì)C3單元格設(shè)置從左下到右上的對(duì)角線、D4單元格同時(shí)設(shè)置兩個(gè)方向的對(duì)角線,代碼如下。運(yùn)行上面代碼可以看到不同單元格被設(shè)置了不同的對(duì)角線,如圖4-12所示。圖4-124.2.4案例:批量設(shè)置單元格字體在前面章節(jié)講述字體設(shè)置的方法時(shí),都是對(duì)單一的單元格進(jìn)行設(shè)置的,而實(shí)際工作中,我們一般會(huì)同時(shí)對(duì)多個(gè)單元格進(jìn)行字體設(shè)置,下面演示一下如何同時(shí)對(duì)多個(gè)單元格進(jìn)行字體設(shè)置。其實(shí)所謂的同時(shí)對(duì)多個(gè)單元格進(jìn)行設(shè)置,就是遍歷每一個(gè)單元格,然后對(duì)每一個(gè)單元格分別進(jìn)行設(shè)置。在遍歷每一個(gè)單元格時(shí)有兩種遍歷方式,一種是按照行進(jìn)行遍歷,即遍歷每一行中的單元格;另一種是按照列進(jìn)行遍歷,遍歷每一列中的單元格。我們將所有的單元格字體設(shè)置成微軟雅黑、字體大小設(shè)置成12、字體顏色設(shè)置成白色、單元格背景色填充為橙色、邊框線用細(xì)線,代碼如下。運(yùn)行上面代碼會(huì)得到如圖4-13所示結(jié)果,可以看到全部單元格的格式都被設(shè)置成功。圖4-13上面代碼通過遍歷每一列中的單元格,從而達(dá)到對(duì)每一個(gè)單元格進(jìn)行樣式設(shè)置的目的。我們也可以通過遍歷每一行單元格對(duì)其進(jìn)行設(shè)置,只需要把遍歷列的for循環(huán)改成遍歷行的for循環(huán),其他部分保持不變,代碼如下。上面代碼是對(duì)一整行中的每一列進(jìn)行格式調(diào)整,還可以只對(duì)部分區(qū)域進(jìn)行格式調(diào)整。比如我們只對(duì)B3:C5單元格區(qū)域進(jìn)行格式調(diào)整,則只需要修改遍歷一整行或者一整列部分的代碼,其他部分保持不變,如下所示。只對(duì)B3:C5單元格區(qū)域進(jìn)行格式調(diào)整以后的結(jié)果如圖4-14所示。圖4-14第5章
用Python設(shè)置Excel對(duì)齊方式Excel中對(duì)齊相關(guān)設(shè)置在“開始”選項(xiàng)卡的“對(duì)齊方式”組中,如圖5-1所示,主要包括水平方向?qū)R、垂直方向?qū)R、自動(dòng)換行、縮進(jìn)、單元格合并等。圖5-15.1設(shè)置對(duì)齊方式基本的對(duì)齊方式設(shè)置是指除單元格合并以外的其他對(duì)齊相關(guān)設(shè)置。Excel實(shí)現(xiàn)在Excel中,要對(duì)單元格進(jìn)行對(duì)齊設(shè)置時(shí),先選中要設(shè)置的單元格,然后點(diǎn)擊功能區(qū)中不同的設(shè)置選項(xiàng),即可完成對(duì)應(yīng)的設(shè)置,如圖5-2所示。圖5-2Python實(shí)現(xiàn)在Python中,要對(duì)單元格進(jìn)行對(duì)齊設(shè)置時(shí),需要用到Alignment()函數(shù),該函數(shù)的具體參數(shù)如下。?horizontal參數(shù)用來設(shè)置水平方向的對(duì)齊類型,該參數(shù)可選的參數(shù)值及對(duì)應(yīng)的對(duì)齊方式如表5-1所示。表5-1?vertical參數(shù)用來設(shè)置垂直方向的對(duì)齊類型,該參數(shù)可選的參數(shù)值及對(duì)應(yīng)的對(duì)齊方式如表5-2所示。表5-2?text_rotation參數(shù)用來設(shè)置文本旋轉(zhuǎn)的角度,直接傳入具體的角度值即可。?wrap_text參數(shù)用來設(shè)置文本是否自動(dòng)換行,參數(shù)值為True時(shí)自動(dòng)換行,為False時(shí)不自動(dòng)換行,默認(rèn)為False。?shrink_to_fit參數(shù)用來設(shè)置文本是否需要自適應(yīng),自適應(yīng)是指單元格中的文本根據(jù)單元格的大小自行調(diào)整文本字體的大小,以適應(yīng)單元格的大小。?indent參數(shù)用來設(shè)置縮進(jìn)字符,直接傳入要縮進(jìn)的字符數(shù)即可。?如果要對(duì)某個(gè)單元格進(jìn)行對(duì)齊設(shè)置,則只需要讓這個(gè)單元格的alignment屬性等于Alignment()函數(shù),并在Alignment()函數(shù)中指明具體的設(shè)置參數(shù)。格式如下。我們對(duì)B1至B9單元格分別設(shè)置不同的水平對(duì)齊方式,代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-3所示結(jié)果。圖5-3?B1單元格是兩端對(duì)齊。兩端對(duì)齊是指如果文本內(nèi)容占滿一行,那么就靠?jī)蓚€(gè)邊界對(duì)齊,如果文本內(nèi)容沒有占滿一行,則以左對(duì)齊的方式顯示。?B2單元格是填滿對(duì)齊。填滿對(duì)齊就是將整個(gè)單元格都填滿。同樣,如果文本內(nèi)容沒有占滿一行,則以左對(duì)齊的方式顯示。?B3單元格也是填滿對(duì)齊。與B2單元格不同的是文本內(nèi)容占滿了一行,所以將整個(gè)單元格填滿顯示。?B4單元格是左對(duì)齊,就是靠左顯示。?B5單元格是右對(duì)齊,就是靠右顯示。?B6單元格是一般對(duì)齊,一般對(duì)齊默認(rèn)的還是左對(duì)齊。?B7單元格也是一般對(duì)齊,但是文本內(nèi)容占滿了一行,這時(shí)文本內(nèi)容展示會(huì)超出單元格。而填滿對(duì)齊中,如果文本內(nèi)容超過一行,展示時(shí)則不會(huì)超出單元格。?B8單元格是居中對(duì)齊,就是靠中間展示。?B9單元格是分散對(duì)齊。分散對(duì)齊是指如果文本內(nèi)容沒有占滿一行,則自動(dòng)調(diào)整字間距,使其占滿一行。下面,我們對(duì)A1、B2、C3單元格分別設(shè)置不同的垂直對(duì)齊方式,代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-4所示結(jié)果。圖5-4?A1單元格是底部對(duì)齊,就是靠單元格的下方對(duì)齊。?B2單元格是居中對(duì)齊,就是位于單元格的中部。?C3單元格是上部對(duì)齊,就是靠單元格的上方對(duì)齊。我們對(duì)A1、B2、C3、D4、E5單元格設(shè)置除對(duì)齊外的其他設(shè)置,代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-5所示結(jié)果。圖5-5?A1單元格的文本內(nèi)容旋轉(zhuǎn)30度,需要注意的是,該角度是逆時(shí)針旋轉(zhuǎn)的。?B2單元格是常規(guī)的超過單元格長(zhǎng)度的文本,會(huì)顯示在單元格的外面。?C3單元格是對(duì)類似B2這種超過單元格長(zhǎng)度的文本進(jìn)行自動(dòng)換行的,以此來保證文本內(nèi)容全部展示在單元格中。?D4單元格也是對(duì)超過單元格長(zhǎng)度的文本進(jìn)行自動(dòng)調(diào)整大小的設(shè)置,會(huì)將字體自動(dòng)調(diào)小,以此來保證文本內(nèi)容全部展示在單元格中。?E5單元格是單元格中的文本縮進(jìn)2個(gè)字符。5.2合并與解除單元格Excel實(shí)現(xiàn)在Excel中,如果要對(duì)單元格進(jìn)行合并,則只需選中要合并的單元格,然后點(diǎn)擊“開始”選項(xiàng)卡下的“合并后居中”命令。如果要解除合并的單元格,同樣也是選中待解除的單元格,然后點(diǎn)擊“開始”選項(xiàng)卡下的“合并后居中”命令。Python實(shí)現(xiàn)在Python中,如果要對(duì)單元格進(jìn)行合并,則需要用到merge_cells()函數(shù),該函數(shù)的形式如下。?ws表示要操作的工作簿,括號(hào)中寫明要合并的單元格。下面我們對(duì)A2:D2單元格區(qū)域進(jìn)行合并,具體代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-6所示結(jié)果,可以看到A2:D2單元格區(qū)域被合并為1個(gè)單元格。圖5-6如果要對(duì)一個(gè)已經(jīng)合并的單元格進(jìn)行解除操作,則需要用到unmerge_cells()函數(shù),該函數(shù)的形式與merge_cells()函數(shù)一致。下面我們先對(duì)A2:D2單元格區(qū)域進(jìn)行合并,然后對(duì)其行解除合并,具體代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-7所示結(jié)果,可以看到A2:D2單元格區(qū)域是未合并狀態(tài)。圖5-75.3設(shè)置合并單元格樣式上面是對(duì)單元格進(jìn)行合并與解除的設(shè)置,除了合并,我們還需要對(duì)合并后的單元格也進(jìn)行樣式設(shè)置。合并后的單元格本質(zhì)上還是一個(gè)單元格,所以對(duì)合并后的單元格進(jìn)行樣式設(shè)置的方法與對(duì)單個(gè)單元格進(jìn)行設(shè)置的方法是一樣的。只不過需要指明合并后的單元格是哪個(gè),一般用左上角的單元格表示,即top_left_cell。下面我們對(duì)B2:F4單元格區(qū)域進(jìn)行合并,然后指明合并后單元格的左上角單元格(top_left_cell)是哪個(gè),對(duì)這個(gè)單元格進(jìn)行樣式設(shè)置就是對(duì)合并后的單元格進(jìn)行設(shè)置,代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-8所示結(jié)果。圖5-85.4案例:批量設(shè)置單元格對(duì)齊方式在4.2.4節(jié)批量對(duì)多個(gè)單元格進(jìn)行字體設(shè)置的基礎(chǔ)上,我們對(duì)多個(gè)單元格進(jìn)行對(duì)齊方式設(shè)置,別的代碼都不需要做更改,只需要在for循環(huán)里面增加對(duì)齊設(shè)置的代碼。除此之外,再增加一個(gè)標(biāo)題行,并對(duì)其進(jìn)行合并單元格設(shè)置,具體實(shí)現(xiàn)代碼如下。運(yùn)行上面代碼會(huì)得到如圖5-9所示結(jié)果,可以看到單元格中的內(nèi)容不管是水平方向還是垂直方向都為居中對(duì)齊,其標(biāo)題行被合并,且字體加粗。圖5-9第6章
用Python設(shè)置Excel數(shù)字、條件格式6.1用Python設(shè)置Excel數(shù)字格式Excel中的數(shù)字格式設(shè)置在“開始”選項(xiàng)卡的“數(shù)字”組中,如圖6-1所示,主要是對(duì)數(shù)字的顯示格式進(jìn)行設(shè)置。圖6-1Excel實(shí)現(xiàn)在Excel中,要對(duì)數(shù)字的顯示格式進(jìn)行調(diào)整,先選中待調(diào)整的數(shù)據(jù),然后點(diǎn)擊如圖6-2所示的三角,就會(huì)出現(xiàn)多種數(shù)據(jù)格式可供選擇,選擇需要的數(shù)據(jù)格式即可。圖6-2Excel中主要有如圖6-3所示的數(shù)字格式可選。圖6-3Python實(shí)現(xiàn)在Python中,要對(duì)數(shù)字的顯示格式進(jìn)行調(diào)整,需要用到number_format屬性,具體形式如下。格式可選的值及對(duì)應(yīng)的數(shù)字類型如表6-1所示。表6-1我們分別賦予A1至A9單元格不同的值,并設(shè)置不同的數(shù)字格式,代碼如下。運(yùn)行上面代碼會(huì)得到如圖6-4所示結(jié)果。圖6-4?我們將A1單元格的數(shù)字格式設(shè)置成了“常規(guī)”。?將A2單元格設(shè)置成了保留2位小數(shù)的小數(shù)格式。如果需要保留其他位數(shù),則只需要把0.00中小數(shù)點(diǎn)后面0的個(gè)數(shù)改成相應(yīng)的位數(shù),比如要保留3位小數(shù),就改成0.000。?將A3單元格設(shè)置成百分比格式。?將A4單元格設(shè)置成保留2位小數(shù)的百分比格式。如果要保留其他位的小數(shù),則也是更改小數(shù)點(diǎn)后面0的個(gè)數(shù)即可。?將A5單元格設(shè)置成貨幣格式。?將A6單元格設(shè)置成科學(xué)計(jì)數(shù)法。?給A7單元格賦予一個(gè)“年月日時(shí)分秒”格式的日期時(shí)間。?將A8單元格設(shè)置成“年月日”的短日期格式。?將A9單元格設(shè)置成“時(shí)分秒”的時(shí)間格式。6.2用Python設(shè)置Excel條件格式Excel中的條件格式設(shè)置主要包括突出顯示單元格規(guī)則、數(shù)據(jù)條、色階、圖標(biāo)集4種類型,如圖6-5所示。圖6-56.2.1突出顯示單元格突出顯示單元格設(shè)置也可以稱為標(biāo)準(zhǔn)條件格式設(shè)置,主要是對(duì)滿足某些標(biāo)準(zhǔn)條件的單元格進(jìn)行突出顯示。Excel實(shí)現(xiàn)在Excel中要對(duì)單元格進(jìn)行突出顯示設(shè)置,先選中需要設(shè)置的單元格,然后依次點(diǎn)擊“開始”選項(xiàng)卡中的“條件格式>突出顯示單元格”命令,選擇要設(shè)置的條件,滿足條件的單元格會(huì)被突出顯示。Python實(shí)現(xiàn)在Python中要對(duì)單元格進(jìn)行突出顯示設(shè)置,需要用到conditional_formatting屬性,具體使用形式如下。ws表示整個(gè)工作簿,'A1:B10'是要設(shè)置格式的單元格區(qū)域。rule表示具體的條件。關(guān)于rule還有一個(gè)具體的函數(shù)CellIsRule(),該函數(shù)的具體形式如下。?operator表示具體的條件類型是什么,可選的參數(shù)值及對(duì)應(yīng)的類型如表6-2所示。表6-2?formula表示具體的條件類型需要滿足的條件值。?fill表示對(duì)滿足條件的單元格突出顯示的設(shè)置,方法就是4.2.2節(jié)單元格填充中介紹的方法。我們對(duì)A1:A10單元格區(qū)域中值大于50的進(jìn)行突出顯示,對(duì)B1:B10單元格區(qū)域中值在50~80的進(jìn)行突出顯示,具體代碼如下。運(yùn)行上面代碼會(huì)得到如圖6-6所示結(jié)果。圖6-6可以看到滿足條件的單元格均被突出顯示。這里需要注意的是,當(dāng)條件類型選擇介于時(shí),formula參數(shù)需要指明具體介于的范圍,比如[50,80]就表示介于50~80。6.2.2數(shù)據(jù)條數(shù)據(jù)條設(shè)置是指將數(shù)據(jù)以數(shù)據(jù)條的形式展示。Excel實(shí)現(xiàn)在Excel中,如果要對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)條格式的設(shè)置,則先選中需要設(shè)置的單元格,然后依次點(diǎn)擊“開始”選項(xiàng)卡中的“條件格式>數(shù)據(jù)條”命令,在彈出的下拉菜單中選擇需要的樣式。上面這種設(shè)置出來的結(jié)果是默認(rèn)的數(shù)據(jù)條樣式,如果想要自定義數(shù)據(jù)條樣式,那么可以點(diǎn)擊如圖6-7所示的“其他規(guī)則”。之后彈出如圖6-8所示的界面。圖6-8中下面的部分就是我們可以進(jìn)行自定義的內(nèi)容。默認(rèn)的數(shù)據(jù)條格式是既展示數(shù)據(jù)條,也展示數(shù)據(jù)條對(duì)應(yīng)的數(shù)字。有時(shí)出于美觀或者數(shù)據(jù)保密性的考慮,我們會(huì)選擇把數(shù)據(jù)隱藏掉,這時(shí)就可以勾選“僅顯示數(shù)據(jù)條”復(fù)選框。圖6-7圖6-8因?yàn)閿?shù)據(jù)條有長(zhǎng)有短,數(shù)據(jù)條的長(zhǎng)短就是根據(jù)數(shù)值的大小來進(jìn)行設(shè)置的,默認(rèn)情況下最短的數(shù)據(jù)條對(duì)應(yīng)最小的數(shù)值,最長(zhǎng)的數(shù)據(jù)條對(duì)應(yīng)最大的數(shù)值。我們也可以對(duì)數(shù)據(jù)條對(duì)應(yīng)的最小值和最大值進(jìn)行設(shè)置。關(guān)于最小值和最大值的可選類型有數(shù)字、百分比、公式、百分點(diǎn)值、自動(dòng)等,可以根據(jù)需要進(jìn)行選擇。我們可以對(duì)數(shù)據(jù)條的長(zhǎng)短、填充類型、填充顏色、邊框線等進(jìn)行設(shè)置。Python實(shí)現(xiàn)在Python中要對(duì)單元格進(jìn)行數(shù)據(jù)條設(shè)置,也需要用到conditional_formatting屬性,還需要用到DataBarRule()函數(shù),該函數(shù)的參數(shù)形式如下。?start_type對(duì)應(yīng)Excel中的最小值類型,可選的參數(shù)值及對(duì)應(yīng)的含義如表6-3所示。表6-3?start_value用于指定start_type的值。?end_type和end_value用于設(shè)置最大值類型和其對(duì)應(yīng)的值。?color用于設(shè)置數(shù)據(jù)條的顏色。?showValue用于設(shè)置是否顯示數(shù)據(jù)條上的數(shù)字。我們對(duì)A1:A10單元格區(qū)域進(jìn)行數(shù)據(jù)條設(shè)置,代碼如下。運(yùn)行上面代碼會(huì)得到如圖6-9所示結(jié)果。圖6-9可以看到,A1:A10單元格區(qū)域都被設(shè)置了數(shù)據(jù)條格式。需要注意的是,當(dāng)最小值類型選擇了min后,就不需要給start_value賦任何值了,最大值也是同理。我們將最小值和最大值類型都設(shè)為'num',并賦予不同的值,代碼如下。運(yùn)行上面代碼會(huì)得到如圖6-10所示結(jié)果。圖6-10上面只是對(duì)A1:A10單元格區(qū)域進(jìn)行數(shù)據(jù)條的設(shè)置,如果我們想同時(shí)對(duì)多列單元格進(jìn)行數(shù)據(jù)條設(shè)置,則只需把ws.conditional_formatting.add('A1-A10',rule)中的'A1-A10'修改成要設(shè)置的多列單元格的范圍即可,比如'A1-B10'。6.2.3色階色階設(shè)置是指將數(shù)據(jù)按照不同值的大小展示為不同顏色的設(shè)置方法。Excel實(shí)現(xiàn)在Excel中,如果要對(duì)數(shù)據(jù)進(jìn)行色階的設(shè)置,則先選中需要設(shè)置的單元格,然后依次點(diǎn)擊“開始”選項(xiàng)卡中的“條件格式>色階”命令,在彈出的下拉菜單中選擇需要的樣式。上面這種設(shè)置出來的結(jié)果是默認(rèn)的色階樣式,如果想要自定義色階樣式,那么可以點(diǎn)擊如圖6-11所示的“其他規(guī)則”命令。圖6-11之后彈出如圖6-12所示界面。圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濰坊市房產(chǎn)過戶手續(xù)簡(jiǎn)化合同
- 2025最材料供銷合同
- 學(xué)校周邊加油站租賃協(xié)議模板
- 學(xué)校宿舍外墻保溫施工合同樣本
- 智能監(jiān)控人防系統(tǒng)建設(shè)協(xié)議
- 科技園區(qū)停車位租賃合同
- 基坑降水施工合同:鄉(xiāng)村振興工程
- 鋼結(jié)構(gòu)工程電子合同范本
- 建筑租賃單項(xiàng)施工合同
- 地下工程勞務(wù)施工合同
- 人員退出機(jī)制
- 勞務(wù)分包施工組織設(shè)計(jì)
- 蜂產(chǎn)品訂購合同范本
- 重卡用前面罩四連桿鉸鏈設(shè)計(jì)解析
- 建筑工程雜填土基坑邊坡支護(hù)方案及效果評(píng)價(jià)分析
- 物業(yè)個(gè)人工作總結(jié)及計(jì)劃五篇
- 樁承載力計(jì)算(抗壓、抗拔、水平、壓屈)
- 熱裂解炭黑N990市場(chǎng)調(diào)查
- 行政管理之印章管理PPT優(yōu)秀課件
- 血透病人高磷血癥的護(hù)理查房(PPT)
- 山東科技大學(xué)成人高等教育學(xué)生學(xué)籍表
評(píng)論
0/150
提交評(píng)論