python解決工作小問題之 處理Excel的重複數據

問題:老婆需要處理一個Excel表,有四千多行數據,如下;其中“型號規格”有很多重複的,需要將重複項進行合併,生成一個新的簡潔的表。“帶娃做作業”和“幫我合併表”,我得選一樣,看了看娃那副調皮樣,我速速決定處理Excel。誰說處理Excel一定要用眼睛一條條對,這不學了python麼,幹這點小活應該沒啥問題。

思路:

1. 先上網查了查python裏如何處理excel,查到有專門的模塊xlrd和xlwt可用。 xlrd是讀excel, xlwt是寫excel庫的。

2. 看了看別人寫的例子,基本就明白怎麼玩這兩個模塊了,讀取的步驟就是:

         a) 打開文件

         b) 獲取所有的sheet

         c)通過名稱或索引獲取某張sheet

         d)根據index,獲取整行、整列或給定單元格的值,

    寫的步驟就是:

        a)在內存中創建一個excel對象

        b)在該excel對象中添加一張sheet

        c)按給定邏輯往單元格中寫入數據

        d)將excel對象save到硬盤上

代碼如下:
 

import xlrd
import xlwt
 
# 用xlrd打開待處理的excel文件,讀取待處理的數據
xlsfile = r"D:\pythonProjects\practise\excelTest\Book1.xlsx"
book = xlrd.open_workbook(xlsfile) # 獲取Excel文件的book對象
 
# sheet0 = book.sheet_by_index(0) # 通過sheet索引獲得sheet對象
# nrows = sheet0.nrows # 獲取需要處理的數據的行數
 
sheet_name = book.sheet_names()[0] # 嘗試通過sheet名字來獲取,當然如果知道sheet名字就可以直接指定
sheet1 = book.sheet_by_name(sheet_name)
nrows = sheet1.nrows # 獲取需要處理的數據的行數
 
# 用xlwt創建一個excel對象,並初始化第一行的數據,爲寫入數據做準備
book_new = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet_new = book_new.add_sheet("sheet1", cell_overwrite_ok=True)
sheet_new.write(0, 0, "型號規格")
sheet_new.write(0, 1, "數量")
line = 1 #後面自動寫入的數據從第二行開始
 
 
# 處理邏輯, calc list用來記錄行是否已經處理過的標誌,先將所有待處理的行初始爲“待處理”的標誌
calc = []
for k in range(1,nrows+1): # 第一行是列名,無須處理
    calc.append(False)     # False表示對應的行未被處理過
 
# 讀取數據進行合併處理,並寫入xlwt創建的對象中
for i in range(1,nrows):
    if calc[i] == False:  # False表示對應的行未被處理過相加過,True表示已相加過,跳過這條數據
        totol_i = sheet1.row_values(i)[1]  # 獲取該行型號的初始數量
 
        for j in range(i+1, nrows):
            if sheet1.row_values(i)[0] == sheet1.row_values(j)[0]: #表示查到了同型號規格的數據
                totol_i += sheet1.row_values(j)[1]
                calc[j] = True #將第j列標誌爲已處理
 
        #將計算的值寫入新建的sheet_new
        sheet_new.write(line, 0, sheet1.row_values(i)[0])
        sheet_new.write(line, 1, totol_i)
        line += 1
 
# 處理完畢,保存到桌面
book_new.save(r'C:\Users\pansc\Desktop\book1.xls')

相關excel文檔:

https://download.csdn.net/download/pansc2004/10428856

https://download.csdn.net/download/pansc2004/10428849

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章