<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自動化辦公之Excel表格合并需求

          共 5299字,需瀏覽 11分鐘

           ·

          2024-03-28 14:30

          點擊上方“ Python爬蟲與數(shù)據(jù)挖掘 ”,進行關(guān)注

          回復“ 書籍 ”即可獲贈Python從入門到進階共10本電子書

          一番桃李花開盡,惟有青青草色齊。

          大家好,我是皮皮。

          一、前言

          前幾天在Python最強王者交流群【FiNε_】問了一個Python自動化辦公的問題。問題如下:你是一名資深的Python自動化辦公工程師,你的電腦桌面上的【數(shù)據(jù)】文件夾內(nèi)有若干個.xlsx文件,每一個表格格式一樣,但是數(shù)據(jù)不一樣,每個表格里面有6個sheet子表,sheet子表名分別為:短期、超短期、可用功、上報日結(jié)果、日結(jié)果、死區(qū)。現(xiàn)在需要你讀取所有表格,并將所有的sheet子表進行合并。比方說:所有的【短期】數(shù)據(jù)匯總在總表的【短期】子sheet,所有的【超短期】數(shù)據(jù)匯總在總表的【超短期】子sheet,所有的【可用功】數(shù)據(jù)匯總在總表的【可用功】子sheet,以此類推。最后,將所有表格的數(shù)據(jù)存放在一個整體的csv文件中,該csv文件的子表名也分別為:短期、超短期、可用功、上報日結(jié)果、日結(jié)果、死區(qū)。請你寫一份Python自動化辦公代碼,幫助解決這個問題。

          二、實現(xiàn)過程

          這里【莫生氣】給了一個指導,得到的結(jié)果如下:

          34983df6e7efc794dbc783c09388c18d.webp

          子表下面的各個表格全部是分開的,給它單獨做出來了,還得手動處理下,才能合并。當然了,這里只是用了其中3個測試文件,實際上是有365個文件的。這里的代碼如下所示:

                  
                  # 短期、超短期、可用功、上報日結(jié)果、日結(jié)果、死區(qū),6個子表單獨分開存儲
          import os
          import pandas as pd

          # 設置工作目錄為包含Excel文件的文件夾路徑
          folder_path = r'C:\Users\pdcfi\Desktop\data'
          os.chdir(folder_path)

          # 子表名數(shù)組
          sheet_names = ['短期''超短期''可用功''上報日結(jié)果''日結(jié)果''死區(qū)']
          # 初始化字典來存放每個子表數(shù)據(jù)
          all_sheets_data = {name: [] for name in sheet_names}

          # 遍歷文件夾內(nèi)所有xlsx文件
          for file in os.listdir(folder_path):
              if file.endswith('.xlsx'):
                  file_path = os.path.join(folder_path, file)
                  # 讀取每個子表并添加到對應的數(shù)組中
                  for sheet_name in sheet_names:
                      # 跳過無法找到子表的情況
                      try:
                          sheet_data = pd.read_excel(file_path, sheet_name=sheet_name)
                          all_sheets_data[sheet_name].append(sheet_data)
                      except Exception as e:
                          print(e)
                          print(f"Skipping sheet {sheet_name} in {file}")

          # 合并每個子表數(shù)據(jù)并保存為CSV文件
          for sheet_name, data in all_sheets_data.items():
              combined_data = pd.concat(data, ignore_index=True)
              csv_file_path = os.path.join(folder_path, f"{sheet_name}.csv")
              combined_data.to_csv(csv_file_path, index=False, encoding='utf_8_sig')

          print('合并工作完成!')

          順利地解決了粉絲的問題。不過接下來【東哥】給了一份代碼優(yōu)化后,如下所示,就可以自動將合并后的表格數(shù)據(jù)保存到一個整體的數(shù)據(jù)表文件中了。

                  
                  import pandas as pd
          import os

          # 讀取所有xlsx文件并逐個合并子表
          folder_path = r'C:\Users\Desktop\data'  # 替換成實際的文件夾路徑

          all_data = {}

          for file_name in os.listdir(folder_path):
              if file_name.endswith(".xlsx"):
                  file_path = os.path.join(folder_path, file_name)
                  xls = pd.ExcelFile(file_path)

                  for sheet_name in xls.sheet_names:
                      if sheet_name not in all_data:
                          all_data[sheet_name] = pd.DataFrame()

                      sheet_data = pd.read_excel(file_path, sheet_name=sheet_name)
                      all_data[sheet_name] = pd.concat([all_data[sheet_name], sheet_data], ignore_index=True)

          # 將所有合并后的數(shù)據(jù)保存到一個整體的CSV文件中
          output_csv = r"C:\Users\Desktop\總表.xlsx"  # 替換成實際的輸出文件路徑

          with pd.ExcelWriter(output_csv, engine='openpyxl'as writer:
              for sheet_name, df in all_data.items():
                  df.to_excel(writer, sheet_name=sheet_name, index=False)

          print("數(shù)據(jù)已成功合并并保存到總表.xlsx。")
          9a7597aff6afc4f34c6bdb600f9b86da.webp

          順利地解決了粉絲的問題。

          后來粉絲還遇到了一個小問題,也順便一起解決了。

          c53c84052b0f3c0239d5b5b05aa88417.webp

          如果你也有類似這種數(shù)據(jù)分析的小問題,歡迎隨時來交流群學習交流哦,有問必答!

          三、總結(jié)

          大家好,我是皮皮。這篇文章主要盤點了一個Pandas自動化辦公的問題,文中針對該問題,給出了具體的解析和代碼實現(xiàn),幫助粉絲順利解決了問題。

          最后感謝粉絲【FiNε_】提出的問題,感謝【莫生氣】、【東哥】給出的思路,感謝【馮誠】等人參與學習交流。

          【提問補充】溫馨提示,大家在群里提問的時候。可以注意下面幾點:如果涉及到大文件數(shù)據(jù),可以數(shù)據(jù)脫敏后,發(fā)點demo數(shù)據(jù)來(小文件的意思),然后貼點代碼(可以復制的那種),記得發(fā)報錯截圖(截全)。代碼不多的話,直接發(fā)代碼文字即可,代碼超過50行這樣的話,發(fā)個.py文件就行。

          b8315c4d797f9795b2b9e072cfc4de19.webp

          大家在學習過程中如果有遇到問題,歡迎隨時聯(lián)系我解決(我的微信:pdcfighting1),應粉絲要求,我創(chuàng)建了一些ChatGPT機器人交流群和高質(zhì)量的Python付費學習交流群和付費接單群,歡迎大家加入我的Python學習交流群和接單群!

          c1155d910eafb6952132ee3209830672.webp

          小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學習群請在后臺回復【 入群

          萬水千山總是情,點個【 在看 】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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天堂二区 |