<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用Python自動生成數(shù)據(jù)日報!

          共 3302字,需瀏覽 7分鐘

           ·

          2022-08-29 10:49

          ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包

          日報,是大部分打工人繞不過的難題。

          下面我們通過一個補寫銷售日報的案例,展示一下Python自動化辦公的優(yōu)勢。本文簡化了案例的流程,在文末附有完整代碼。

          需求詳解

          朋友的需求是這樣的,他們平時的銷售數(shù)據(jù)是記錄在Excel上,匯總后會按照部門進行統(tǒng)計。但是今年年初時,領(lǐng)導(dǎo)突然要求寫日報,大家寫了一個月發(fā)現(xiàn)并不檢查就沒繼續(xù)寫下去。

          ▲Excel日報數(shù)據(jù)

          現(xiàn)在突然被要求明天交本月之前的所有日報,這相當(dāng)于要補2-5月將近120天的日報,如果靠雙手復(fù)制粘貼,那估計要吐血了。朋友將其寫日報的相關(guān)文件都發(fā)了過來,發(fā)現(xiàn)最終日報效果如下所示。

          所以需求也就是比較簡單了,只需要從Excel表格中讀取每日的數(shù)據(jù),使用Python將其處理后,再依次寫入Word文檔中,即可實現(xiàn)批量生成日報。

          數(shù)據(jù)處理

          在進行數(shù)據(jù)處理之前,要先了解最終需要哪些數(shù)據(jù)。如下圖所示,在目標(biāo)日報Word中主要分為兩類:紅色標(biāo)記的數(shù)值主要是由當(dāng)日的數(shù)據(jù)、或者由它們計算后得到的數(shù)據(jù)構(gòu)成;綠色標(biāo)記的表格則更簡單了,就是近七日的數(shù)據(jù)(銷售數(shù)量、銷售金額、銷售目標(biāo)、完成度)。

          首先我們導(dǎo)入Pandas模塊進行數(shù)據(jù)處理

          import pandas as pd
          df = pd.read_excel("日報數(shù)據(jù).xlsx")
          df

          輸出結(jié)果

          導(dǎo)入數(shù)據(jù)后,接著就可以按照我們的需求,來進行數(shù)據(jù)運算了。數(shù)據(jù)運算主要分為兩種,一種是利用加 +、減 -、乘 *、除 / 進行數(shù)據(jù)運算,另一種是利用統(tǒng)計方法進行數(shù)據(jù)運算。

          在交互式環(huán)境中輸入如下命令:

          df["日期"] = df["日期"].apply(lambda x:x.strftime("%Y-%m-%d"))
          df["當(dāng)日完成度"] = (df["銷售金額"]/df["銷售目標(biāo)"]*100).round(1)
          df["累計銷售金額"] = df["銷售金額"].cumsum()
          df["當(dāng)年完成度"] = (df["累計銷售金額"]/2200000*100).round(1)
          df["累計銷售金額"] = (df["累計銷售金額"]/10000).round(2)
          df

          輸出結(jié)果:

          可以看到,最終結(jié)果截圖中紅色標(biāo)記的數(shù)據(jù)內(nèi)容已經(jīng)全部被計算出來。而綠色標(biāo)記的表格則更加簡單了,使用Pandas模塊中的數(shù)據(jù)選取即可

          在交互式環(huán)境中輸入如下命令:

          num = 10
          df.iloc[num-7:num, :5]

          輸出結(jié)果:

          通過這種方法就可以輕松得到某一日期的過去7日內(nèi)的日報數(shù)據(jù)合集。

          自動生成日報

          使用Python自動化操作Word通常會使用python-docx模塊,而批量生成Word文檔一般有兩種方法:使用add_ paragraph()add_table()等方法給Word文檔添加各種內(nèi)容。另一種就是我們這次要用的,即按照位置替換原Word文檔中的文字和表格數(shù)據(jù)等。

          在交互式環(huán)境中輸入如下命令:

          for index, rows in df.iterrows():
              if index > 30:
                  doc.paragraphs[0].runs[1].text = rows[0]
                  doc.paragraphs[4].runs[4].text = rows[0]
                  doc.paragraphs[4].runs[6].text = str(rows[1])
                  doc.paragraphs[4].runs[8].text = str(rows[2])
                  doc.paragraphs[5].runs[1].text = str(rows[3])
                  doc.paragraphs[5].runs[3].text = str(rows[4])
                  doc.paragraphs[9].runs[2].text = str(rows[5])
                  doc.paragraphs[9].runs[7].text = str(rows[6])

                  table = doc.tables[0]
                  data_table = df.iloc[index-6:index+1,:5]    
                  for i in range(7):
                      for j in range(5):
                          table.cell(i+1,j).text = str(df.iloc[i,j])
                  
                  doc.save(f"銷售日報-{rows[0]}.docx")

          執(zhí)行代碼,輸出結(jié)果:

          如上圖所示,120份有記錄的銷售日報就寫好啦,Python自動化辦公就是怎么神奇。

          完整代碼獲取方式:

          鏈接:https://pan.baidu.com/s/1TPn53r4wd_k_VgqOewlO_A?pwd=kxpy

          提取碼:kxpy

          因為語法簡單、容易上手,Python 被稱為“最適合初學(xué)者學(xué)習(xí)”的編程語言。而對于工作中各種重復(fù)性的電腦工作,都可以考慮用Python來轉(zhuǎn)變?yōu)樽詣踊绦颉?/p>

          如果你是一個Python初學(xué)者,會發(fā)現(xiàn)本文的邏輯非常簡單,甚至大家還可以對此進行改進。比如python-docx模塊在讀取Word文檔有優(yōu)勢,但是向模板中寫入文本時,可以考慮使用docxtpl模塊(學(xué)一點Jinja2語法)。


          1. 細(xì)思恐極,插上 U 盤就開始執(zhí)行 Python 代碼

          2. 不要再寫Python for循環(huán)了

          3. 推薦 GitHub 上的一套公開 API 接口,簡直不要太全!



          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄片视频下载 | 人妻人妇一级精品毛片 | 亚洲做爱在线 | 97男人天堂 | 亚洲综合13p |