用Pandas對Excel不規範字段二次分類彙總

2021-10-22 18:30:59 字數 2060 閱讀 4080

前言:

在實務中,常常有這樣的情況:有一張excel**是彙總表,比如按班級彙總的分數表;但發現因為學員歸屬表錯誤或缺漏等原因,還有張三等五人,沒有被歸類到任何乙個班級。如果數量級很少,查詢未被歸屬的資訊,返回到原表用excel重新進行分類彙總是可行的。但如果數量級較大,或者歸屬表資訊一時難以完整修改,可以用pandas簡單進行二次彙總功能。即另外建立一張針對缺漏歸屬的新錶,根據上一彙總表和新歸屬表,進行二次彙總運算。

一、例項:

1、原彙總表

在下表中,dep欄位中有王

五、林四等沒有被歸入到規範的第一至第三組中。現在需要建立一張新歸屬表,然後重新運算匯總數。

該錶假定位於 c:\py_test\groups.xlsx,此資料為sheet1

depvalue

第一組85

王五65

第二組120

林四20

強八30

第三組150

張一200

楊六15

2、新歸屬表

根據未被歸屬的情形,在以上檔案sheet2,建立新歸屬表如下:

name

belong

王五第三組

張二第五組

林四第一組

強八第四組

張一第二組

我們特意保留了乙個未被歸屬的「楊六」

二、流程:

import numpy as np

import pandas as pd

# 匯入原彙總資料,預設sheet1

data1 = pd.read_excel("c:\py_test\groups.xlsx",head=0)

# 匯入新歸屬表,指定sheet2

data2 = pd.read_excel("c:\\py_test\\groups.xlsx",head=0,sheet_name="sheet2")

# 將新歸屬表與原彙總表連線,類似excel vlookup,方法為 left左連線,並生成新錶data3

data3=data1.merge(data2,how='left',left_on='dep',right_on='name')

# 刪除data3多餘字段

data3.drop('name',axis=1,inplace=true)

# 將data3缺失的歸屬,用原彙總表欄位補上。比如第一組,在新歸屬表中是缺失,因此仍然等於第一組

data3.loc[data3['belong'].isna(),'belong']=data3['dep']

# 刪除data3多餘字段

data3.drop(['dep'],axis=1,inplace=true)

# 用pd.dataframe groupby進行分類彙總

g = data3.groupby('belong').sum()

# 輸出新分類表

g.to_excel('c:\py_test\groups-cp20210321.xls')

print("已經將計算結果輸出為c:\py_test\groups-cp20210321.xls檔案!")

處理完成後,是下面的結果

belong

value

楊六15

第一組105

第三組215

第二組320

第四組30

data4 = data2.merge(data1,how='left',left_on='name',right_on='dep')

print("注意!!:新歸屬表中" + data4[data4['dep'].isna()]['name'] + "在原彙總表中沒有對應的專案,請留意!!")

# out[7]:

# 1 張二

三、後記:

pandas在處理excel資料大有用武之地。特別是針對一些邏輯複雜、流程較長和不規範資料的處理上,有較大的效率優勢。這方面將不斷探索其應用方面。比如兩張表的比對問題,就耗時耗力,而且極易出錯。這方面我將嘗試製作一些小工具,自用利他,作為參考一二。

everyang 於南京 2021/03/21,[原文](

Python用pandas讀取excel資料

python匯入資料主要用的是read x 方法,x表示匯入檔案的格式 匯入.xlsx檔案,用read excel print 10 用python如何讀取資料源和熟悉資料 10 print 嗶哩嗶哩python課程,主要講用pandas獲取資料源 print 1.匯入資料 n2.熟悉資料 prin...

像用excel一樣用pandas

預計需要15min閱讀此教材 本教材僅講述如何檢視excel資料,篩選,排序,查詢替換資料,不涉及excel中複雜的圖形繪製及樣式修改。假設,已經存在乙個test.xlsx檔案,僅包含乙個sheet,檔案內容如下。col1 col2 foo1 bar1 foo2 bar2 讀取乙個excel並賦值給...

用python對excel進行操作 讀,寫,修改

將乙個列表的資料寫入excel,第一行是標題,下面行數具體的資料 import xlwt 只能寫不能讀 st 姓名 年齡 性別 分數 mary 20,女 89.9 mary 20,女 89.9 mary 20,女 89.9 mary 20,女 89.9 book xlwt.workbook 新建乙個...