太秀了!用 pandas 搞定 24 張 Excel 報表

2021-03-02 Python數據科學

又到周末了,東哥文末贈送 5 本書《Python大數據分析從入門到精通》,規則見文末,歡迎留言參與~

最近有不少粉絲問我關於Python批量操作Excel的問題。

大家的關注點主要是如何循環遍歷表格、如何用Pandas批量處理,當然,還有在996的壓迫下如何提效(來擠出更多摸魚時間)。

為此,我特意肝了幾天,用基於實際業務的脫敏數據,以完整小項目的形式,來集中解決這些問題。

我的Pandas實戰系列老傳統,完整案例代碼和數據源,已經打包好放在文末。

不吹牛集團這幾年孵化了50個品牌,在各渠道做了大量品宣層面的曝光。現在集團首席吹牛官提了兩個需求:

1. 要一張大表,包含每個月搜索人數TOP5的品牌相關數據,以及對應品牌在當月的搜索份額和排名。

2. 在現有數據基礎上,找到最近一年投放效果還不錯的品牌,要吹吹牛,做年度表彰。

這是小z特別準備的兩個具有代表性的需求:

話音未落,集團首席吹牛官的跟屁蟲就把相關源數據丟過來了

一共24張Excel表格,按月存儲,涵蓋了從2019年1月到2020年12月的數據。

表格內部數據大同小異:

註:點擊人數和支付人數,都是在搜索人數基礎上統計的

每張表都有50個品牌,包括了品牌名、品牌搜索人數、點擊人數和對應的支付人數這幾個關鍵欄位。

源數據就是這樣簡簡單單中又透漏著麻麻煩煩,接下來,我們就開始手撕需求。

開始動手前,我們要明確需求。

再回顧一下首席吹牛官的第一個需求:要一張大表,包含每個月搜索人數TOP5品牌的相關數據,以及對應品牌在當月的搜索份額和排名。

提煉:在現有源數據的基礎上,我們還需要對各品牌月內按搜索人數排序,然後計算每個品牌搜索份額,取其前5,最後遍歷匯總。

自動化之哥曾經說過:Python批量操作Excel,無論表格再多,處理邏輯再複雜,只要我們集中力量擊破一張,就能夠實現批量操作的全面勝利。

首先,我們要解決的是單張表的問題。

按搜索人數排序:

調用rank快速給到對應的排名:

再來計算搜索份額,搜索份額的計算公式:單品牌搜索人數/所有品牌搜索人數匯總,用Pandas計算,怎一個easy了的!

正當我們準備批量執行操作,首席吹牛官發來了消息:

「需求一略有調整,投資人最關注的是凌雲這個品牌,要求在匯總表中,每個月凌雲品牌的相關指標排在最前面,後面跟著搜索排名TOP5的品牌」。

具體排名邏輯如圖所示:

面對需求的臨時改動,見過大風大浪的我們內心沒有一絲波瀾,甚至還有一點想笑。小事一樁,改改Pandas邏輯就好了。

先找到目標品牌凌云:

再按照順延的邏輯,定位TOP5品牌相關數據:

合併即可獲取我們想要的結果:

單表操作完成,批量操作,只需要建立好循環+合併關係,並引入日期列,在合併結果中對不同的表數據做好區分:

result = pd.DataFrame()
for name in os.listdir(): df = pd.read_excel(name) df = df.sort_values('品牌搜索人數',ascending = False) df['搜索人數排名'] = df['品牌搜索人數'].rank(ascending = False) df['搜索份額'] = df['品牌搜索人數'] / df['品牌搜索人數'].sum() brand = '凌雲' brand_data = df.loc[df['品牌'].str.find(brand) != -1,:] other = df.loc[df['品牌'].str.find(brand) == -1,:] other_top5 = other.iloc[:5,:] data = pd.concat([brand_data,other_top5]) data['日期'] = name[4:-5] result = pd.concat([result,data])

Pandas批量操作,就是如此絲滑~

第一個需求搞定。

還記得那個明(che)確(dan)的需求二嗎?

「在現有數據基礎上,找到最近一年投放效果還不錯的品牌,要吹吹牛,做年度表彰。」

首席吹牛官以成本數據過於機密為由,除了說各品牌費用基本無差別之外,沒有透露任何關於成本方面的數據,我們自然也無法計算投放ROI了這些核心指標了。

目前能夠拿到的,只有品牌、搜索人數、點擊人數和對應支付人數這幾個指標。

要找到最近一年投放效果還不錯的品牌,我們可以用漏鬥思維,從量級(人數)和效率(轉化率)兩個角度來考慮:

在費用無差別的情況下:

在項目二場景中,三個指標越高越好。接下來,我們就結合搜索人數,搜索-點擊轉化率和點擊-支付轉化率,用Pandas做一波分析。

要對最近一年的數據做分析,我們先把2020年所有數據合併,拿到匯總表:

再按品牌的維度,做指標匯總:

計算對應的搜索-點擊轉化率,點擊-支付轉化率:

基礎數據齊活了!

從僅有的head5數據可以看到,雙敏品牌以160萬的搜索人數獨佔鰲頭,但是!排名第二的九方,雖然搜索人數少了40多萬,卻能憑藉較高的搜索-點擊轉化率和點擊-支付轉化率,在支付人數上遠超雙敏,成為支付之王。

表格太晦澀,我們畫個圖吧:

註:因為分析背景是無差別投放,搜索人數重要性非常高,為了可視化簡潔清晰,我們簡單粗暴的篩選TOP15品牌來繪圖

氣泡大小代表著品牌搜索人數量級

根據氣泡圖,我們按照搜索-點擊轉化率和點擊-支付轉化率的高低劃分了4個區間:

區間1:高搜索-點擊轉化,高點擊-支付轉化

區間2:低搜索-點擊轉化,高點擊-支付轉化

區間3:低搜索-點擊轉化,低點擊-支付轉化

區間4:高搜索-點擊轉化,低點擊-支付轉化

再結合數據表,看的更加清晰:

結果顯而易見,高搜索量級的品牌,主要呈現出兩種形態:

正當我們準備把這一步結果同步給首席吹牛官,順便探討進一步的數據分析方向,比如結合支付人數的金額貢獻、留存率、LTV,以及引入兩年增速的維度,結合業務動作來定位深層原因。

沒想到首席吹牛官發來了這樣的消息:

「第二個需求我可能沒說清楚,這次不僅是表彰,也是給融資機構秀肌肉的一部分,我們關注的只是品牌聲量,對應的就是品牌搜索人數這個指標,你匯總好排個序就好」


我們每個人會說超過5種語言的髒話,但在這個場景,大部分人只能條件反射般的打出這8個字:

「嗯嗯,好的,馬上給到」

實例故事告一段落,上述數據維度和驗證角度,大家可以做更多的探索。

相關數據源和代碼已經打包好,獲取地址

連結:

https://pan.baidu.com/s/1e-rP7lrSXLrO2KAz8dXz3Q

提取碼:chui

贈送新書Python大數據分析從入門到精通5 本!已經贈送多次了,這本書非常棒,由北京大學出版社贊助提供,感興趣的朋友非常推薦入手一本。介紹:本書結合Python在數據分析領域的特點,介紹如何在數據平臺上集成使用Python。本書內容分為3大部分。第1部分(第1~3章)為搭建開發環境和導入測試數據;第2部分(第4~12章)為Python對HDFS、Hive、Pig、HBase、Spark的操作,主要是對常用API的說明;第3部分(第13~16章)是在前面章節的基礎上,介紹如何進行數據的分析、挖掘、可視化等內容。
參與方式:本篇文章底部「點讚」+「在看」+「留言」,文章內容相關的優質留言才可上牆!留言點讚數量最多5位讀者將獲得這本書,截止時間1月26日20:00,最終獲贈者添加我的微信領取。PS:禁止惡意刷贊!發現後將進入黑名單,取消上牆資格。🧐分享、點讚、在看,給個三連擊唄!

相關焦點

  • 技巧 | 看完這些技能,我都不敢說自己會用EXCEL……
    來自美國的一位小哥Hunter Hobbs,用長達9個小時36分10秒,堅持把手指放在鍵盤的向下鍵上,告訴我們,excel是有盡頭的。(心疼)今天這篇文章,我想和你分享一些你應該知道的excel技巧,學會這些,讓你不做樓上那位小哥。你經常需要使用滑鼠點很多次的操作,可能一個快捷鍵就可以一次性搞定。
  • 技巧 | 年薪100萬的人都是怎麼玩Excel的?
    來自美國的一位小哥Hunter Hobbs,用長達9個小時36分10秒,堅持把手指放在鍵盤的向下鍵上,告訴我們,excel是有盡頭的。(心疼)今天這篇文章,我想和你分享一些你應該知道的excel技巧,學會這些,讓你不做樓上那位小哥。你經常需要使用滑鼠點很多次的操作,可能一個快捷鍵就可以一次性搞定。
  • EXCEL全套報表製作流程(會計人必備)
    關於報表這個磨人的「小妖精」,很對學員對它是又愛又恨,不知道怎麼收拾它,為了幫助大家徹底降服這「小妖精」恆企會計為大家搜羅了教為齊全的報表製作流程
  • 昨天,因為這篇EXCEL教程,我卸載了王者榮耀.
    美麗又有才華的可視化報表工具- Excel Powerview,(2013的加載項)類似一個數據透視表的切片器,可以對數據進行篩選查看。即使缺少統計和編程的背景知識,也可以用它處理20億條數據,快速做出交互式的動態數據圖表。
  • 年薪100萬的人都是怎麼玩Excel的?
    今天這篇文章,我想和你分享一些你應該知道的excel技巧,學會這些,讓你不做樓上那位小哥。你經常需要使用滑鼠點很多次的操作,可能一個快捷鍵就可以一次性搞定。@日本某大神樓下這位日本老爺爺,居然因為其他繪畫軟體太昂貴,電腦預裝了excel。
  • 如何在excel輸入√與×自動標註顏色,你的同事1分鐘就搞定
    如何在excel輸入√與×自動標註顏色,你的同事1分鐘就搞定首先,我們需要了解什麼叫做自定義單元格式呢?在excel中所有的數據都存放在單元格中,數據的格式有很多比如:文本、數值、日期、時間、百分比、分數等,一般情況下excel會根據我們輸入數據的特徵自動的為數據設置一個較為合適的格式。
  • 皕傑報表工具對大數據量展現報表的展示形式:行式報表
    行式報表是皕傑報表工具專為大數據量純展現報表設置展現形式,在6.0以前吧版本裡叫簡單查詢報表,從6.0起叫做行式報表。那麼行式報表究竟有什麼不同呢?首先一點就是取數的方式不同。行式報表是採取sql分頁查詢的方式,每次只從資料庫查詢一頁的數據,點擊下一頁再重新查詢資料庫取數,因此,當數據量較大的時候,可以採用簡單查詢報表。zh其次就是行式報表只能是純展現報表。這個好理解,因為我們只取出了一部分數據,因而沒法做分組,求和,求平均值等運算。只是將數據取出來展示出來,所以叫做純展現。
  • 【動物】Red Pandas Are So Cute 可愛的小熊貓
    Red pandas have red fur all over. It’s like a warm coat.    Red pandas live in the trees. They can climb very high and very well.
  • 使用Python自動生成報表以郵件發送
    而且大部分報表都是重複性的工作,這篇文章就是幫助大家如何用Python來實現報表的自動發送,解放你的勞動力,可以讓你有時間去做更有意思的事情。首先來介紹下實現自動報表要使用到的Python庫:pymysql 一個可以連接MySQL實例並且實現增刪改查功能的庫datetime Python標準庫中自帶的關於時間的庫openpyxl 一個可以讀寫07版以後的Excel文檔(.xlsx格式也支持)的庫smtplib SMTP即簡單郵件傳輸協議,Python簡單封裝成了一個庫
  • Python+Pandas | 分析比特幣與股票市場的關係
    我們將使用Pandas DataReader下載SP500價格和美聯儲經濟數據(FRED)作為源。如果您以前從未使用過Pandas DataReader和Pandas,則需要安裝軟體包。您可以使用pip命令來做到這一點。
  • Excel 動態報表製作技巧,分分鐘學會!(建議收藏)
    Excel高手的報表卻是這樣的:用圖表動態展示每個月的銷售完成情況。沒有對比就沒有傷害,即好看又直觀,完勝第一種純表格式報表。看上去很複雜,其實有一個Excel功能就可以輕鬆搞定,它就是:數據透視表。下面我們就分享一下這種動態報表的製作方法。步驟1:添加數據數據透視表選取源表格插入數據透視表 - 添加任務完成率到值標籤框中 - 設置百分比格式 - 添加切片器 - 選取月份。
  • 如何用Python讀取Excel中圖片?
    用os.listdir()函數來獲取在這個路徑下的所有文件名字。這裡強調下,本章代碼採用的路徑,除了上面講過的path外,其他都用絕對路徑,因為如os模塊和zipfile模塊,這些模塊用絕對路徑更不會報錯。
  • 中方致函韓國動物園:別讓人亂摸熊貓了丨Bear in mind pandas are an endangered species
    近日,在一檔名叫「24teaser angered many netizens because there was still a risk of transmitting zoonotic infections as some of the members own pet dogs and cats.Some drew attention to an incident in 2015 where four giant pandas
  • 證件照背景色不對,ps又不會咋整,用excel啊,僅需4步搞定
    Hello,大家好,對於更換證件照的背景色並排版這樣的問題,相信大家第一時間想到的就是使用ps來解決,但是我們使用excel也搞定這樣的問題,過程也並不複雜,下面就讓我們來一起操作下吧一,刪除圖片背景並填充顏色
  • 「panda」是「熊貓」,「car」是汽車,「panda car」是什麼
    大家好,歡迎來的餅哥英語的頻道,今天我們分享一個非常有用且地道的表達——panda car, 這個短語的含義不是指「熊貓車」,其正確的含義是:panda car 巡邏警車(此表達來源於英國)Slow down, there's a panda car up ahead!
  • 用Python爬取糗事百科段子,可視化後結果發現
    大家好,我是小五🐶生活真是太苦了,需要找點快樂的精神食糧支撐社畜生活,聽說糗事百科段子挺多,今天就來看一看!import refrom wordcloud import WordCloudimport matplotlib.pyplot as plt# 讀取段子數據datas = pd.read_excel('datas.xlsx')['段子內容']# 讀取停用詞數據with open('stop_words.txt', encoding
  • 如何在Excel裡安裝excel插件?
    數據獲取的過程麻煩,特別是周期性的數據獲取,每次都要找IT人員幫忙,再粘貼到excel中去。首先,文件滿天飛,不好管理;其次,權限不好控制,沒法做到只共享分析結果,而不共享明細數據;最後,數據沒法做到每個人的數據不同,根據用戶權限動態更新數據。
  • 你會用Excel做 柏拉圖 嗎?
    一、柏拉圖有什麼用?  柏拉圖表是美國品管大師朱蘭博士運用義大利經濟學家柏拉圖(Pareto)的統計圖加以延伸所創造出來的,柏拉圖又稱排列圖。  在圖表中,柱子是排序後的投票數,而折線則是累計佔比。
  • excel數字結構解析:日期和時間的自動識別規則
    不知道大家有沒有發現這麼一個現象,在excel中輸入一下不太完整的日期或時間,依然能被excel自動識別出來。比如在excel中輸入「19-12-1」,excel會自動顯示「2019/12/1」。那在excel中,識別日期和時間的規則還有哪些呢?我們一起來看看吧!
  • excel中快速輸入√與×並自動標註顏色,你不會,同事1分鐘就搞定
    Hello,大家好,今天跟大家分享下如何快速的輸入√與×這兩個符號並且讓他們自動填充顏色,效果如下圖,在這裡我們是使用自定義單元格格式來設置的,僅需1分鐘即可搞定,話不多說,下面就跟大家分享下如何製作一、自定義單元格格式