溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python秒處理多張Excel表的方法

發(fā)布時(shí)間:2022-02-23 10:48:26 來(lái)源:億速云 閱讀:159 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“Python秒處理多張Excel表的方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python秒處理多張Excel表的方法”吧!

背景

小明就職于一家戶(hù)外運(yùn)動(dòng)專(zhuān)營(yíng)公司,他們公司旗下有好多個(gè)品牌,并且涉及到很多細(xì)分的行業(yè)。小明在這家公司任數(shù)據(jù)分析師,平時(shí)都是通過(guò) Excel 來(lái)做數(shù)據(jù)分析的。今天老板丟給他一個(gè)任務(wù):下班前篩選出集團(tuán)公司旗下最近一年銷(xiāo)售額前五名的品牌以及銷(xiāo)售額。

對(duì)于 Excel 大佬來(lái)說(shuō),這不就是分分鐘的事嗎?小明并沒(méi)有放在眼里,直到市場(chǎng)部的同事將原始的數(shù)據(jù)文件發(fā)給他,他才意識(shí)到事情并沒(méi)有那么簡(jiǎn)單

這并不是想象中的排序取前五就行了。這總共有90個(gè)文件,按常規(guī)的思路來(lái)看,他要么將所有文件的內(nèi)容復(fù)制到一張表中進(jìn)行分類(lèi)匯總,要么將每張表格進(jìn)行分類(lèi)匯總,然后再最最終結(jié)果進(jìn)行分類(lèi)匯總。

想想這工作量,再想想截止時(shí)間,小明撓了撓頭,感覺(jué)到要漸漸頭禿。

思路分析

這種體力活,寫(xiě)程序解決是最輕松的啦。小明這時(shí)候想到了他的程序員好朋友小段,于是他把這個(gè)問(wèn)題拋給了小段。

小段縷了下他那所剩無(wú)幾的頭發(fā),說(shuō):so easy,只需要找潘大師即可。

小明說(shuō):你搞不定嗎?還要找其他人!

小段苦笑說(shuō):不不不,潘大師是 Python 里面一個(gè)處理數(shù)據(jù)的庫(kù),叫 Pandas ,俗稱(chēng) 潘大師。

小明說(shuō):我不管什么大師不大師,就說(shuō)需要多久搞定。

小段說(shuō):給我?guī)追昼妼?xiě)程序,再跑幾秒鐘就好了!

小明發(fā)過(guò)去了膜拜大佬的表情。

小段略微思考了下,整理了一下程序思路:

  • 計(jì)算每張表每一行的銷(xiāo)售額,用“訪(fǎng)客數(shù) 轉(zhuǎn)化率 客單價(jià)”就行。

  • 將每張表格根據(jù)品牌匯總銷(xiāo)售額。

  • 將所有表格的結(jié)果匯總成一張總表

  • 在總表中根據(jù)品牌匯總銷(xiāo)售額并排序

編碼

第零步,讀取 Excel :

import pandas as pd


df = pd.read_excel("./tables/" + name)

第一步,計(jì)算每張表格內(nèi)的銷(xiāo)售額:

df['銷(xiāo)售額'] = df['訪(fǎng)客數(shù)'] * df['轉(zhuǎn)化率'] * df['客單價(jià)']

第二步,將每張表格根據(jù)品牌匯總銷(xiāo)售額:

df_sum = df.groupby('品牌')['銷(xiāo)售額'].sum().reset_index()

第三步,將所有表格的結(jié)果匯總成一張總表:

result = pd.DataFrame()
result = pd.concat([result, df_sum])

第四步,在總表中根據(jù)品牌匯總銷(xiāo)售額并排序:

final = result.groupby('品牌')['銷(xiāo)售額'].sum().reset_index().sort_values('銷(xiāo)售額', ascending=False)

最后,我們來(lái)看看完整的程序:

import pandas as pd
import os


result = pd.DataFrame()


for name in os.listdir("./tables"):
    try:
        df = pd.read_excel("./tables/" + name)
        df['銷(xiāo)售額'] = df['訪(fǎng)客數(shù)'] * df['轉(zhuǎn)化率'] * df['客單價(jià)']
        df_sum = df.groupby('品牌')['銷(xiāo)售額'].sum().reset_index()
        result = pd.concat([result, df_sum])
    except:
        print(name)
        pass


final = result.groupby('品牌')['銷(xiāo)售額'].sum().reset_index().sort_values('銷(xiāo)售額', ascending=False)
pd.set_option('display.float_format', lambda x: '%.2f' % x)
print(final.head())

最后的結(jié)果是這樣的:

       品牌           銷(xiāo)售額
15   品牌-5 1078060923.62
8   品牌-17 1064495314.96
4   品牌-13 1038560274.21
3   品牌-12 1026115153.00
13   品牌-3 1006908609.07

可以看到最終的前五已經(jīng)出來(lái)了,整個(gè)程序運(yùn)行起來(lái)還是很快的。

到此,相信大家對(duì)“Python秒處理多張Excel表的方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI