如何使用python效率办公_日常office工作中如何用python提升效率014
今天講一下:
如何將數據分析結果存放于同一Excel文件中的不同Sheet頁
先回顧一下:
學習筆記的第一篇,就講過了如何利用Pandas的read_excel和to_excel方法從excel文件中讀取數據和寫Excel文件,其中講到寫Excel時,我們只寫了一張表,因為如果使用to_excel(文件名)這種方法,第二次寫文件時會直接覆蓋上一次寫的結果,那就永遠只有最后一次寫入的那張表。
今天本來是想講一下openpyxl模塊的,但后來發現pandas的to_excel方法其實也能寫多個sheet頁,所以我先看這個方法:
1、需要用到模塊
pandas datetime
先引入這兩個武器:
import pandas as pd
import datetime as dt
2、準備工作:
我們使用上篇那個test009.xlsx文件,不再另外準備數據表了。
3、先導入費用表和部門信息表
bf = pd.read_excel("d:\\data\\test009.xlsx",sheet_name="費用")
bm = pd.read_excel("d:\\data\\test009.xlsx",sheet_name="部門")
4、組合兩張表數據:
df = pd.merge(bf,bm,left_on="工號",right_on="employee ID")
5、今天的任務是把組合后的數據中“工號”、“姓名”、“報銷日期”、“費用類型”、“報銷金額”、“部門”等列的數據,按9月和10月時間過濾,分別存入一個excel表中的兩個sheet頁,sheet頁名分別為"Sep"和"Oct"
6、先把數據過濾出來:
df09 = df[["工號","姓名_x","報銷日期","費用類型","報銷金額","部門"]].where(df["報銷日期"] < dt.datetime(2018,10,1))
df10 = df[["工號","姓名_x","報銷日期","費用類型","報銷金額","部門"]].where(df["報銷日期"] >= dt.datetime(2018,10,1))
上面語句中,dt.datetime(2018,10,1)方法用于“構造”一個datetime標準時間,它的值為“2018-10-01 00:00:00 000000",報銷日期小于它的數據則是9月份的報銷記錄,報銷日期大于等于它的,則是10月份的報銷記錄。兩條命令運行后的結果如下:
我們可以發現兩個結果中都存在許多缺失值的數據行,這是因為我們使用where方法對原數據集df進行過濾時,它會每行去進行匹配篩選,如符合,則取原值,如不符合,則設為缺失值,因此,在存入excel文件之前,我們還需要使用dropna方法把缺失值的數據行都刪除:
df09 = df09.dropna()
df10 = df10.dropna()
7、將df09和df10數據寫入excel文件:
writer = pd.ExcelWriter('d:\\data\\test010.xlsx')
df09.to_excel(writer, sheet_name="Sep",index=False)
df10.to_excel(writer, sheet_name="Oct",index=False)
writer.save()
writer.close()
結果如下:
上面主要是使用ExcelWriter方法,在內存中先創建了一個Excelbook的writer對象,然后在內存中對其進行操作,無論你寫多少張sheet頁,在save前,都不會影響實際的文件內容,因此,寫完所有數據后,還需要使用save方法保存到文件中,并將writer對象關閉。
今天就先總結到這兒,如果大家有什么問題,可在公眾號后臺給我留言,在我能力圈內的,盡快給大家回復。
下篇預告:
講一下pandas中另一種數據透視表方法
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的如何使用python效率办公_日常office工作中如何用python提升效率014的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中uniform randi
- 下一篇: websocket python爬虫_p