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

2021-01-11 Python數據世界

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

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

前言

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

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

pclass:船艙等級survived:是否生還fare:票價sex:性別home.dest:住址案例1:分析性別對生還率的影響

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

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)案例2:貧富差距

我們用透視表分析 船艙等級 與 生還率的影響。

下面是Excel透視表結果:

接著是pandas實現:

修改 index 參數為 pclass,即可按船艙等級匯總行9:不想再重複編寫那段"非人"看的佔比計算,直接調用一個自定義的函數(函數實現看源碼)從結果可以看到,頭等艙生還率最高(更多原因是船艙等級越低,位置越靠近船底部,逃生越困難)

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

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

index 參數傳入多個欄位的列表從結果看到,每個等級的船艙還是"女性比男性更可能生還"

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

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

案例3:小夥伴結伴同遊,更安全

以前我發布過一篇文章,曾經使用 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(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據
    此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言本系列上一節說了拆分數據的案例,這次自然是說下怎麼合併數據。
  • 懂Excel也能輕鬆入門Python數據分析包pandas(二):高級篩選(上)
    更多 Python 數據處理的乾貨,敬請關注!!!!系列文章:懂Excel就能輕鬆入門Python數據分析包pandas(一):篩選功能前言經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 懂Excel就能輕鬆入門Python數據分析包pandas(七):分列
    經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言今天從兩個需求來看看數據分列功能,由於 Excel 自帶功能比較弱,在處理稍微複雜的需求時會顯得力不從心,因此,本系列文章將引入 Excel 中一個非常高效的數據處理插件—— Power Query,並且看看 pandas 是怎樣靈活解決。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰2 32深度學習必備原理與實戰3
  • 想成為高效數據科學家?不會Pandas怎麼行
    選自 towardsdatascience作者:Félix Revert機器之心編譯參與:Nurhachu Null、張倩Pandas 是為了解決數據分析任務而創建的一種基於 NumPy 的工具包,囊括了許多其他工具包的功能,具有易用、直觀、快速等優點。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!本附註的結構:導入數據導出數據創建測試對象查看/檢查數據選擇查詢數據清理篩選、排序和分組統計數據首先,我們需要導入pandas開始:import pandas as pd導入數據使用函數pd.read_csv直接將CSV轉換為數據格式。注意:還有另一個類似的函數pd。read_excel用於excel文件。
  • 未明學院:7張思維導圖掌握數據分析關鍵庫pandas
    原創: 未明學院Pandas是一個強大的分析結構化數據的工具集;它基於numpy,用於數據分析和數據挖掘,同時也提供數據清洗功能。pandas與numpy一起構成了數據分析的基礎雙生庫。今天小明邀請了未明的王老師,給大家總結了pandas的核心知識,主要包括以下幾個方面。pandas核心知識01、首先我們來認識一下pandas的一些基本概念。pandas概述02在使用pandas做數據分析的時候往往第一步就是將數據導入進來,比如csv或者excel格式的數據,下面這張圖就是我們讀取數據時候的方法和參數。
  • 使用pandas和openpyxl處理複雜Excel數據
    關於Excel數據處理,很多同學可能使用過Pyhton的pandas模塊,用它可以輕鬆地讀取和轉換Excel數據。但是實際中Excel表格結構可能比較雜亂,數據會分散不同的工作表中,而且在表格中分布很亂,這種情況下啊直接使用pandas就會非常吃力。本文蟲蟲給大家介紹使用pandas和openpyxl讀取這樣的數據的方法。
  • python數據分析——pandas導出數據合集
    導入pandas庫:import pandas as pd導入基礎數據:df=pd.read_excel('數據.xlsx')1.將DataFrame寫入csv\txt文件DataFrame.to_csv()常用參數:path_or_buf=None:輸出文件路徑,默認None
  • python數據分析——pandas導入數據合集
    導入pandas庫import pandas as pd1.導入csv\txt文件數據pd.read_csv()常用參數:filepath_or_buffer:文件路徑(必填,其他參數按需求填寫)sep:指定分隔符,默認逗號','。header:指定第幾行作為表頭。
  • FineBI的數據分析操作,竟然是一個升級版的數據透視表
    常常被用作大數據前端展現的工具,對接hadoop、Spark等平臺;用作業務部門的取數、業務數據分析(IT數據部準備好數據,業務查看分析)。它的操作就像是Excel中的數據透視表,相信很多小夥伴兒特別是已經在職場已經混跡很多年的小夥伴兒,對Excel中的數據透視表非常熟悉,沒錯,FineBI的操作類似一個升級版的數據透視表。
  • 從Excel中解救你!如何用Python實現報表自動化
    通過使用筆者在數據透視表教程中的數據(https://towardsdatascience.com/a-step-by-step-guide-to-pandas-pivot-tables-e0641d0c6c70),概覽一下我們將要自動化到底是什麼。數據格式將使你期望從公司資料庫中獲得的內容與客戶銷售數據相匹配,與你期望從公司資料庫中獲得的數據相匹配。
  • Pandas閃回咒!如何在Python中重寫SQL查詢?
    一些程式設計師只熟悉SQL中的數據操作,卻不熟悉Python中的數據操作,因此在完成項目時,我們不得不頻繁地在SQL和Python之間進行切換,導致了工作效率低下和生產能力下降。本文就教你一種方法,使用Pandas在Python中輕鬆重現SQL結果。
  • pandas指南:做更高效的數據科學家
    如果你是Python新手,很難知道針對特定任務的包哪個是最好的。你需要有經驗的人來告訴你。今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    其中,有些可能是相當有名的,有些可能是新的,但我相信下次您從事數據分析項目時,它們會非常有用。1.Profiling the pandas dataframeProfiling 是一個幫助我們理解數據的程序,而 Pandas Profiling 正是實現這一點的一個 python 包。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    作為一名苦逼的文員,經常同word、excel、ppt打交道,有些工作,比如事務性的,敲幾個文字,做幾個圖表,一般人都應該沒有啥問題,很輕鬆就會搞定。但是在同excel打交道過程中,你會面對一系列公式、紛繁的統計和複雜數據分析,比如這個公式:=IFERROR(TRIM(IF(LEN(VLOOKUP(F7,Sheet3!
  • Excel數據透視表怎麼做
    我們常常使用Excel表格管理數據,例如物料管理,在一年的物料信息表中,怎樣快速了解每個季度的銷售情況呢?這就會用到數據透視表,數據透視表可以很容易地排列和匯總這些複雜數據。數據透視表怎樣做呢?一、插入數據透視表1.