懂Excel輕鬆入門Python數據分析包pandas(二十一):透視表

2021-02-23 數據大宇宙


此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd





> 經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas


本系列上一節文章最後我隨手使用了 pandas 中的透視表操作,之後有些小夥伴詢問我相關的問題。正好 pandas 的 pivot_table 也是與 Excel 透視表對應。本文簡單教你入門使用 pandas 完成透視表功能。



繼續使用鐵達尼號沉船事件的乘客名單作為例子:

- pclass:船艙等級

- survived:是否生還

- fare:票價

- sex:性別

- home.dest:住址


這裡只簡單說明怎麼製作透視表,以方便那些不熟悉透視表的小夥伴:

- 3步完成



分析目標涉及的維度:

- 性別

- 生還率


這些維度用於分類依據,放入透視表的行或列標籤:

- 把 sex 欄位拖入 行標籤,survived 欄位拖入 列標籤

- 還需要統計人數,人名總是有的,因此把 name 欄位拖入 數值區域

- 透視表立刻出結果,行標籤 放入的欄位的唯一值,被顯示在透視表左側。列標籤 放入的欄位的唯一值,被顯示在透視表的上方


只看數值看不出門路,設置百分比吧:

- 點中透視表任意一格,滑鼠右鍵

- 按上圖指示完成


- 女性 生還率遠高於 男性!!


> 接下來不再顯示 Excel 透視表操作

pandas 要做出透視表的效果,實際與 Excel 透視表的概念基本一致:

- 參數 index 就是 Excel 透視表中的 行標籤

- 參數 columns : Excel 透視表中的 列標籤

- 參數 values:Excel 透視表中的 數值區域

- 參數 aggfunc:Excel 透視表中的 數值區域 的欄位的統計方式(Excel 默認是計數)



"好像少了點東西……"


沒有總計行列,可以通過參數設置:

- 參數 margins 默認為 False,顯示總計行列

- 參數 margins_name ,設置總計行列的索引值


> 實際上很少需要使用這2個參數,因為 pandas 中添加這2列是非常簡單



"Excel 透視表是百分比呀"


pandas 透視表功能沒有參數設置,因為本身透視出來的還是一個 DataFrame ,這可以利用之前學到的一切技巧來為這個 DataFrame "添油加醋":

- 默認情況下,如果把一個 DataFrame 作為文本顯示,小數是不會變百分比,這裡可以設置 pd.set_option('display.float_format', '{:.2%}'.format) 。這種設置不會影響數據類型,比如把此結果輸出到 Excel ,仍然是小數

- 行9:每行(axis=1)做運算(apply),行中每個數字(r) 除以(/) 行中剔除最後一個數據(r[:-1])的總和(sum)


我們用透視表分析 船艙等級(1表示一等艙,2表示二等艙……) 與 生還率的影響。


下面是 Excel 透視表結果:


接著是 pandas 實現:

- 修改 index 參數為 pclass,即可按船艙等級匯總

- 行9:不想再重複編寫那段"非人"看的佔比計算,直接調用一個自定義的函數(函數實現看源碼)



從結果可以看到,頭等艙生還率最高(更多原因是船艙等級越低,位置越靠近船底部,逃生越困難)


"我還想結合性別看看船艙等級對生還率的影響,怎麼搞?"


很簡單,pivot_table 中的大部分參數都可以放入多個欄位(跟 Excel 透視表操作一樣):

- index 參數傳入多個欄位的列表


從結果看到,每個等級的船艙還是"女性比男性更可能生還"


"嘿,感覺直接用 Excel 透視表就好了,還寫啥代碼,麻煩死"


如果只是上述這些簡單匯總的分析,我也建議直接用 Excel 透視表。但實際工作中,不可能只是這麼簡單的匯總。


以前我發布過一篇文章,曾經使用 power bi 對這個數據進行初步分析,文中發現,裡面有些人是一起登記上船的,而結伴上船的人有更高的生還率。


> 相關文章:[公眾號 -> 數據分析 -> 探索分析]。文章中並沒有給出 pandas 代碼。


但是,原始數據是沒有欄位可以直接反映是否有結伴上船的情況。


數據中 ticket 列是船票號,**有相同的船票號並且多於1人以上的,可以視為是購買套票**的,也就是一起上船的。


解決思路就是:把 ticket 列內容相同的歸為一組,組內有多於1行記錄的,就是有小夥伴一起上船的


相信一直看本系列的小夥伴馬上就知道,這在 pandas 中不就是分組操作嗎!下面是代碼:

- 行3:這句就是把每個人標記為"是否套票"的實現,這個不多解析了,幾乎與上面說的中文語義一致

- 行5-10:利用透視表,對欄位 isgroup 統計一下生還人數比例

- 很明顯,沒有小夥伴的人裡面(上圖結果的第一行),生還比例只有 27.21% 。相比較,有小夥伴一起上船的乘客(上圖結果的第二行),生還人數比例就比較高



> 上面結果的行列顯示不太好看(isgroup 顯示 True 和 False,survived 顯示 0 和 1),你知道怎麼把他們替換成友好的中文內容嗎?


本文重點:

- DataFrame.pivot_table 是一個快速統計的好工具,其概念與 Excel 的數據透視表一致





需要源碼的小夥伴,公眾號發送"數據處理"


覺得寫得不錯,點擊右下方"在看"


如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。


相關焦點

  • 懂Excel就能輕鬆入門Python數據分析包pandas(十五):拆分數據
    此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd轉發本文並私信我"python",即可經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 懂Excel輕鬆入門Python數據分析包pandas(十七):合併不規範數據
    後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言本系列上一篇文章關於合併多個 Excel 數據,許多小夥伴似乎對此比較感興趣,問我是否可以合併不規範的數據,本文就用他們提出的需求做一個大致講解上一節文章:懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據奇葩格式
  • 懂Excel輕鬆入門Python數據分析包pandas(二十八):二分法查找
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 數據分析—一文看懂數據透視表(Excel&Pandas-pivot_table實現)
    因為考慮到直接學pivot_table會有點難度,所以本篇文章將由淺入深的先通過excel實現透視表,慢慢地過渡到利用pandas來實現。一、 什麼是數據透視表透視表是一種可以對數據動態排布並且分類匯總的表格格式。利用透視表可以快速地進行分類匯總,自由組合欄位聚合計算。
  • 左手pandas右手Excel,帶你學習數據透視表
    數據透視表是數據分析工作中經常會用到的一種工具。Excel本身具有強大的透視表功能,Python中pandas也有透視表的實現。本文使用兩個工具對同一數據源進行相同的處理,旨在通過對比的方式,幫助讀者加深對數據透視表的理解。數據源簡介:本文數據源來自網絡,很多介紹pandas的文章都使用了該數據。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 「Python替代Excel Vba」系列(三):pandas處理不規範數據
    帶你用pandas玩轉各種數據處理前言本系列前2篇已經稍微展示了 python 在數據處理方面的強大能力,這主要得益於 pandas 包的各種靈活處理方式。這裡的名字按照原有數據做了脫敏。這是典型的報表輸出格式,其中有合併單元格,內容把科目和人名回到一起去。由於案例原有的需求比較繁瑣,本文核心是處理數據,因此簡化了需求。不管我們的分析目的是什麼,第一步就是要把這份數據整理好,才能應對各種分析。我們開始吧。
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    書籍推薦《大話軟體測試》出版啦,內容包括但不限於性能、自動化、接口、安全、移動APP非功能測試、抓包、loadrunner、jmeter、soapui、Appium、python
  • Python數據處理庫pandas入門教程
    本文是對它的一個入門教程。pandas提供了快速,靈活和富有表現力的數據結構,目的是使「關係」或「標記」數據的工作既簡單又直觀。它旨在成為在Python中進行實際數據分析的高級構建塊。入門介紹pandas適合於許多不同類型的數據,包括:由於這是一個Python語言的軟體包,因此需要你的機器上首先需要具備Python語言的環境。關於這一點,請自行在網絡上搜索獲取方法。關於如何獲取pandas請參閱官網上的說明:pandas Installation。
  • 像Excel一樣使用python進行數據分析
    Excel是數據分析中最常用的工具,本篇文章通過python與excel的功能對比介紹如何使用python通過函數式編程完成excel中的數據處理及分析工作。在Python中pandas庫用於數據處理,我們從1787頁的pandas官網文檔中總結出最常用的36個函數,通過這些函數介紹如何通過python完成數據生成和導入,數據清洗,預處理,以及最常見的數據分類,數據篩選,分類匯總,透視等最常見的操作。文章內容共分為9個部分。這是第一篇,介紹前3部分內容,數據表生成,數據表查看,和數據清洗。
  • Python數據核對系列之2—power query VS pandas
    上一篇文章我們整體梳理了我核對兩個表數據,從excel query模式一版版過渡到python多線程多進程讀取資料庫數據後完成核對並輸出結果到資料庫表中的整個版本迭代過程
  • 懂Excel就能輕鬆入門Python數據分析包pandas(十三):合併單元格
    經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言做數據分析時,當你拿到一份 Excel 數據之後,我相信你還沒有看數據,心就已經涼了一半。這是因為大概率數據格式"好看不好算",今天來看看怎麼解決報表格式常見的合併單元格問題。案例1今天你接到一個分析需求,需要統計2年內個城市月度平均銷量。
  • excel高手不加班的神器:用數據透視表輕鬆做匯總分析!
    課程信息卡課程:《Excel天天訓練營》2.0圖文版章節:第1章-提高效率內容:excel數據透視表如果你諮詢過一些excel高手,會發現他們會經常提及數據透視表。在excel裡面,數據透視表確實可以算作一個神器,因為用它不需要會寫函數公式,也可以非常輕鬆的做數據匯總和數據分析。現在,我們就來講下excel高手不加班的神器:用數據透視表輕鬆做匯總分析!
  • 「Python替代Excel Vba」系列(二):pandas分組統計與操作Excel
    帶你用pandas玩轉各種數據處理前言在本系列的上一章已經介紹了如何讀寫 excel 數據,並快速進行匯總處理。但有些小夥伴看完之後有些疑惑:那只是簡單讀寫數據而已,有時候需要設置 excel 的格式。
  • Excel不好嗎,為什麼非要用Python做數據分析?
    習慣性打開Excel,點開數據透視表,調整參數,然後進行運算得到女性市委書記的數量,寫上函數,求出了女性市委書記的比例:2.77%。正當我想把這個結論發給老闆時,他先找我了:剛交給你的任務暫時不用做了,新來的人已經做好了一版結論,圖看著還挺專業。
  • Python數學建模技巧之pandas數據處理
    因此,採用python去分析幾乎就成了唯一的選擇。恰好Python裡面的pandas庫提供了大數據處理分析的基本方法,是分析大型數據集的基礎武器。下面就具體講解一下pandas這個庫裡面最有用的一些函數操作。
  • 《pandas數據讀取》
    今天呢就給大家分享一個數據分析裡面的基礎內容之pandas數據讀取 數據讀取是進行數據預處理,建模與分析的前提,不同的數據源
  • Pandas與Excel徹底拉開了距離.....
    我們都會看到一句「要求掌握Excel」。通過Pandas我們可以方便的操作數據的增、查、改、刪、合併、重塑、分組、統計分析,此外Pandas還提供了非常成熟的I/O工具,用於讀取文本文件,excel文件,資料庫等不同來源數據,利用超快的HDF5格式保存/加載數據。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰2 32深度學習必備原理與實戰3
  • 分析計算成績排名、平均分等情況,用Excel數據透視表輕鬆完成
    職場中,銷售產品數據要進行分析:如產品的銷售佔比、銷售額匯總等;以便銷售計劃調整與開展。學校中,考試成績要進行分析排名,以便更好地進行教學計劃。今天小編以成績為例,用數據透視表功能輕鬆搞定,以班級為單位對成績進行分析:匯總、平均分、排名等。