<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私活案例,辦公自動(dòng)化處理水質(zhì)數(shù)據(jù)

          共 3335字,需瀏覽 7分鐘

           ·

          2022-04-20 20:38

          前言:

          今天接到一個(gè)私活,是要求通過(guò)python實(shí)現(xiàn)辦公自動(dòng)化的,我一看表格有點(diǎn)多,瞬間感覺(jué)到頭大。當(dāng)我靜下心來(lái)看的時(shí)候,發(fā)現(xiàn)做這些表格用到的知識(shí)在螞蟻老師的課上都有講過(guò),于是果斷搞起。

          任務(wù)說(shuō)明:

          表1和表2是每個(gè)月更新的數(shù)據(jù),要求按照表3模板的格式,將表3紅色方框中的數(shù)據(jù)進(jìn)行更新,并且水質(zhì)類(lèi)別表的標(biāo)題也進(jìn)行更新。實(shí)現(xiàn)全部自動(dòng)化。

          表1:
          表2:
          表3:

          一,讀取表格數(shù)據(jù)

          經(jīng)過(guò)對(duì)表3的分析,首先我們要讀取表1,表2中紅色方框的數(shù)據(jù),以及表三中斷面名稱(chēng)。要實(shí)現(xiàn)一鍵自動(dòng)化,那就將三個(gè)目標(biāo)文件放在一個(gè)文件夾里,然后根據(jù)名稱(chēng)進(jìn)行判斷。

          import?pandas?as?pd
          import?xlwings?as?xw
          import?os,re
          file_list?=?os.listdir('./')
          file1=''
          file2?=?''
          file3?=?''
          for?file?in?file_list:
          ????if?file.endswith('xlsx'):
          ????????if?'-斷面水質(zhì)類(lèi)別表'?in?file:
          ????????????file1?=?file
          ????????elif?'年報(bào)'?in?file:
          ????????????file2?=?file
          ????????elif?'國(guó)省控?cái)嗝嫠|(zhì)類(lèi)別表'?in?file:
          ????????????file3?=?file
          print('斷面水質(zhì)類(lèi)別文件1:',file1)
          print('湖庫(kù)水質(zhì)文件2:',file2)
          print('國(guó)省控?cái)嗝嫖募?:',file3)

          得到對(duì)應(yīng)文件結(jié)果:

          斷面水質(zhì)類(lèi)別文件1:2022年3月-斷面水質(zhì)類(lèi)別表.xlsx 湖庫(kù)水質(zhì)文件2:2022年3月-湖庫(kù)水質(zhì)月_季_年報(bào) ?.xlsx 國(guó)省控?cái)嗝嫖募?:2022年2月-(定)國(guó)省控?cái)嗝嫠|(zhì)類(lèi)別表.xlsx

          讀取表1數(shù)據(jù):

          df1?=?pd.read_excel(file1,header=1)
          df1?=?df1.iloc[1:,[3,6,7,8,9]]
          df1.columns?=?['斷面名稱(chēng)','本月','上月','上年同期','超標(biāo)污染物']
          df1

          讀取表2數(shù)據(jù):

          df2?=?pd.read_excel(file2,header=1)
          df2_1?=?df2.iloc[1:,[4,7,8,9,10]]
          df2_1.columns?=?['斷面名稱(chēng)',?'本月',?'上月',?'上年同期',?'超標(biāo)污染物']
          df2_2?=?df2.iloc[1:,13:19]
          df2_1

          讀取表3中斷面名稱(chēng)

          app?=?xw.App(visible=False,?add_book=False)
          workbook?=?app.books.open(file3)
          data1?=?workbook.sheets['22個(gè)省控?cái)嗝?].range('C3:C24').options(index=False).value
          df3_1?=?pd.Series(data1,name='斷面名稱(chēng)')

          然后將表1表2數(shù)據(jù)進(jìn)行拼接,然后與表3的斷面名稱(chēng)進(jìn)行合并:

          df1?=?pd.concat([df1,df2_1],axis=0)
          df_province?=?pd.merge(df3_1,df1,on='斷面名稱(chēng)',how='left')
          df_province

          部分結(jié)果如下:

          二,數(shù)據(jù)分析

          下面就是要根據(jù)導(dǎo)出來(lái)的表對(duì)本月,上月,上年同期的類(lèi)別進(jìn)行數(shù)據(jù)分析了

          df_province_data?=?df_province.loc[:,['本月','上月','上年同期']]
          def?get_tpye_data(df):
          ????#?獲取單月df類(lèi)別個(gè)數(shù)比例
          ????new_df?=?pd.DataFrame()
          ????ser?=?pd.Series(['Ⅰ類(lèi)','Ⅱ類(lèi)','Ⅲ類(lèi)','Ⅳ類(lèi)','Ⅴ類(lèi)','劣Ⅴ類(lèi)'],name='類(lèi)別')
          ????#?new_df['個(gè)數(shù)']?=?df_province["本月"].value_counts()
          ????new_df['個(gè)數(shù)']?=?df

          ????new_df?=?pd.merge(ser,new_df,how='left',left_on='類(lèi)別',right_on=new_df.index,sort=True)
          ????new_df.set_index('類(lèi)別',inplace=True)
          ????new_df.fillna(0,?inplace=True)
          ????new_df.loc['總計(jì)']?=?new_df.sum()
          ????new_df['比例']?=?new_df.apply(lambda?x:?new_df['個(gè)數(shù)']/new_df.loc['總計(jì)','個(gè)數(shù)'])
          ????new_df['優(yōu)良']?=?new_df['比例']
          ????new_df.loc[['Ⅰ類(lèi)','Ⅱ類(lèi)'],'優(yōu)良']?=?new_df.loc['Ⅰ類(lèi)','比例']?+?new_df.loc['Ⅱ類(lèi)','比例']
          ????new_df.loc['優(yōu)良率']?=?new_df.loc[['Ⅰ類(lèi)','Ⅱ類(lèi)','Ⅲ類(lèi)'],'比例'].sum()
          ????new_df.loc[['總計(jì)','優(yōu)良率'],['比例','優(yōu)良']]?=?'—'
          ????new_df['個(gè)數(shù)']?=?new_df['個(gè)數(shù)'].astype('int')
          ????new_df['類(lèi)別']?=?new_df.index

          ????new_df?=?new_df.reindex(columns=['類(lèi)別','個(gè)數(shù)','比例','優(yōu)良'])
          ????return?new_df
          benyue_df?=?get_tpye_data(df_province["本月"].value_counts())
          benyue_df

          得到單月的類(lèi)別數(shù)據(jù)情況,結(jié)果如下:

          通過(guò)調(diào)用函數(shù)分別的到不同月份的數(shù)據(jù),并進(jìn)行合并:

          shangyue_df?=?get_tpye_data(df_province["上月"].value_counts())
          qunian_df?=?get_tpye_data(df_province["上年同期"].value_counts())
          df_all?=?pd.concat([benyue_df,shangyue_df,qunian_df],axis=1,join='outer',ignore_index=False)
          df_all

          三,按照表格位置寫(xiě)入數(shù)據(jù)

          最后就是數(shù)據(jù)寫(xiě)入文件了,由于表3中文件都是設(shè)置好的格式,比例導(dǎo)入后直接轉(zhuǎn)成百分比;

          寫(xiě)入表格標(biāo)題:

          month?=?file1.split('-')[0]
          title_provice?=?workbook.sheets['22個(gè)省控?cái)嗝?].range('A1').value???#?獲得表格標(biāo)題
          workbook.sheets['22個(gè)省控?cái)嗝?].range('A1').value?=?month?+?'-'?+?title_provice.split('-')[-1]??#?寫(xiě)入標(biāo)題

          寫(xiě)入水質(zhì)類(lèi)別表及營(yíng)養(yǎng)指數(shù):

          workbook.sheets['22個(gè)省控?cái)嗝?].range('C3:G24').value?=?df_province.values??
          workbook.sheets['22個(gè)省控?cái)嗝?].range('H24:M24').value?=?df2_2.values

          寫(xiě)入類(lèi)別數(shù)據(jù):

          workbook.sheets['22個(gè)省控?cái)嗝?].range('I5:T12').value?=?df_province_data.values

          更新當(dāng)前數(shù)據(jù)月份文件名,并關(guān)閉表格:

          f?=?re.sub('\w+月',month,file3)
          workbook.save(f)
          print(f,'文件保存完成')
          workbook.close()
          app.quit()

          任務(wù)完成!只要好好聽(tīng)螞蟻老師的課,這些python實(shí)現(xiàn)辦公自動(dòng)化的案例你也能搞定~


          螞蟻老師的全棧套餐,在抖音掃碼購(gòu)買(mǎi);有答疑服務(wù)、副業(yè)介紹等福利



          瀏覽 100
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  又色又爽的网站 | 乱码av一起艹 | 中文字幕一区第一页 | 秋霞电影网一区二区三区 | 超碰碰人人家 |