Python批量合并Excel,實(shí)現(xiàn)數(shù)據(jù)透視表
數(shù)據(jù)透視表是Excel非常高級(jí)的功能,它能夠?qū)㈤L(zhǎng)表轉(zhuǎn)換成寬表,以多維度交叉的形式查看數(shù)值,更容易對(duì)比和分析數(shù)據(jù)。
單個(gè)Excel表的數(shù)據(jù)透視是比較容易的,然而如果數(shù)據(jù)分散在不同的Excel工作表的時(shí)候就難以處理。這時(shí)候結(jié)合Python,我們就能強(qiáng)強(qiáng)聯(lián)手。
## 問(wèn)題定義
有這樣的一個(gè)書(shū)店銷(xiāo)售數(shù)據(jù),分多個(gè)sheet,每個(gè)sheet是一個(gè)月份的數(shù)據(jù)銷(xiāo)售記錄,現(xiàn)在一個(gè)個(gè)sheet查看數(shù)據(jù)不方便,就想到用數(shù)據(jù)透視表。

如果我想實(shí)現(xiàn)如下的結(jié)果透視表,該怎么做到呢?
大家如果仔細(xì)查看這個(gè)透視表,會(huì)發(fā)現(xiàn)每本書(shū)不同月份的銷(xiāo)量、不同書(shū)籍相同月份的銷(xiāo)量等趨勢(shì)和對(duì)比,都更加明顯的得到對(duì)比。

## 引入Pandas,讀取源Excel文件

## 將多個(gè)Sheet表進(jìn)行合并
因?yàn)樵垂ぷ鞅碇袥](méi)有“月份”這一列,但是數(shù)據(jù)透視的時(shí)候需要按月份透視,所以我們先新增這一列,值設(shè)置為sheet name,然后對(duì)多個(gè)表合并,合并時(shí)用到了pd.concat。

## 調(diào)用pd.pivot_table實(shí)現(xiàn)數(shù)據(jù)透視

如上的pd.pivot_table很強(qiáng)大,介紹下其中的參數(shù):
- df_all,即要訪(fǎng)問(wèn)的data frame數(shù)據(jù)
- index,透視表的行
- columns,透視表的列
- values,透視表的數(shù)值
- aggfunc,對(duì)值的聚合函數(shù),默認(rèn)是mean,這里改成sum加和
- fill_value,有些書(shū)籍在某些月份是沒(méi)有銷(xiāo)售的,填充值為0
- margins,是否在行尾部、列尾部,添加匯總列
- margins_name,匯總列的名字
打印透視表,看到如下效果

## 保存到結(jié)果Excel文件
這一步就簡(jiǎn)單了

## 總結(jié)
相比Excel,Python在批量化處理上具備強(qiáng)大的優(yōu)勢(shì),結(jié)合透視表,可以實(shí)現(xiàn)比Excel原生透視表更強(qiáng)大的功能。
