日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas简明教程:八、Pandas数据透视表

發布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas简明教程:八、Pandas数据透视表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

透視表(pivot)是由微軟發明的一個概念,1993年微軟注冊了PivotTable這一商標,而他們又在2020年正式撤銷了注冊。

關于透視表的話題隨便搜搜就是一大堆,而有些地方可能都吹得很神了。透視表的不多說,我們直接通過Pandas中關于它的操作來認識。

1、透視表的基本操作方法

再次回到張三團伙的例子:

df月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 1 2 張三 男 2000 1000 主犯 2 3 張三 女 2000 15000 主犯 3 4 張三 女 2000 1500 主犯 4 5 張三 女 2000 1500 主犯 5 2 李四 男 1800 1300 從犯 6 3 李四 男 1800 1300 從犯 7 4 李四 男 1800 1300 從犯 8 5 李四 男 1800 1300 從犯 9 1 王五 女 1800 1300 龍套 10 2 王五 女 1800 1300 龍套 11 3 王五 女 1800 1300 龍套 12 4 王五 女 1800 1300 龍套

這張表仔細看看,主要是記錄了3個人幾個月以來的收入情況,這就很像是公司員工的收入甚至于個人的收入了(比如把姓名一欄改成某個收入類目)。這樣的表很詳細,但也有缺點,那就是當我想看一些匯總的數據的時候,手動起來就很頭痛了。于是我們先來看一個簡單的例子:

df.pivot(index = '月份',columns = '姓名',values = '應發工資')姓名 張三 李四 王五 月份 1 2000.0 NaN 1800.0 2 2000.0 1800.0 1800.0 3 2000.0 1800.0 1800.0 4 2000.0 1800.0 1800.0 5 2000.0 1800.0 NaN

上面的代碼返回的是這三個人按月的收入狀況。其中王五在5月的收入是空,而回到原表可以發現的確沒有他在這個月的收入情況。

如果我們把應用場景拉回到現實:原表即是每個員工每個月的收入,作為老板或者會計是不是就想看看員工的總收入情況。那么此時如果作為財務人員,一步就能取出老板想要看的東西。非常地方便!

由于這個對象太過重要,我們還是老實地看一遍官方文檔的說明:

參數說明
indexstr或對象或str列表
用于制作新框架索引的列。 如果為None,則使用現有索引。
columnsstr或對象或str列表
用于制作新框架列的列。
valuesstr,對象或先前列表(可選)
用于填充新框架值的列。 如果未指定,將使用所有剩余的列,并且結果將具有按層次結構索引的列。
返回類型
DataFrame。返回調整后的DataFrame。

結果我們剛才的例子,index被重新指定為“月份”,所以新表就是按列索引的。columns是姓名,于是每個人的名字變成了列,最后values被指定為“應發工資”。這一系列操作如果變成老板的需求就成了:

給我做一個每個人的月收入報表,只要應發工資。

如果沒有感受到這種操作的便利,那就自己手動操作一下。

2、透視+統計

當然上述情況也只是其中一種,另外作為老板的我們可能也還想知道,除了詳細情況以外,各員工的總收入是怎樣的,于是

df.pivot(columns = '姓名',values = '實發工資').sum()姓名 張三 20500.0 李四 5200.0 王五 5200.0 dtype: float64

注意,由于我們這次是要計算總收入,所以索引就不能再是月份,直接默認就好。而此時如果非要加上索引,那么它也會消失。

df.pivot(index='月份',columns = '姓名',values = '實發工資').sum()姓名 張三 20500.0 李四 5200.0 王五 5200.0 dtype: float64

結果和上面一樣。這是因為由于我們用了sum()這個函數。它的本質是對values進行操作,而此時values被操作的維度剛好和index一致,因此index也就沒有存在的必要了。

當然,結合上述實例我們也能想得到可以用類似的方法來查詢最大值、最小值、平均值、中位數等等。具體的相關函數可以查看Pandas中DataFrame的屬性及方法大全

3、透視表的本質

做到現在相信各位同學也都能多少有點感覺了。第一個例子中我們將index和columns分開,然后就變成了一張新表。如果我們用數組的觀點來看的話,這兩個東西其實剛好就代表數據的兩個維度,每個對應位置的數據本身其實并沒有發生變化。換言之,數據透視表其實就是將這種一維表變成二維表的過程。

回到第一例,我們仔細查看就不難發現,“月份”和“姓名”是兩個完全獨立的維度,它們自己有重復,但它們的組合并沒有重復。那么這樣的表,就可以很自然地做成透視表。

反之,如果不滿足這個條件透視表就無從談起,比如:

df.pivot(index = '月份',columns = '性別',values = '應發工資') ---------------------------------------------------------------------------ValueError: Index contains duplicate entries, cannot reshape

這時就報錯說有重復的項存在。這里主要是“月份”和“性別”的組合對應得有相同的值,因此就無法對它們進行透視。

那么,在實際操作過程中,就要時刻想著作為index和columns的這兩個維度的組合不存在重復值即可。

4、其它建議

上面的內容只是一個簡單的介紹,要徹底弄明白透視表還得多多去練習,把更多的實例裝進腦子才更容易融會貫通。這里我們找到一些講得比較好的貼子供大家參考:

一文看懂pandas的透視表pivot_table

python pandas庫——pivot使用心得

pandas.DataFrame.pivot — pandas 1.1.0 documentation

Python | Pandas.pivot() - GeeksforGeeks

本系列教程教程完整目錄:

一、Pandas簡介與安裝

二、Pandas基本數據結構-DataFrame與Series

三、Pandas文件讀寫

四、Pandas數據索引方式

五、Pandas簡單統計操作及通用方式

六、Pandas條件查詢

七、Pandas缺失數據的處理(數據清洗基礎)

八、Pandas數據透視表

九、表的合并、連接、拼接(數據聚合基礎)

總結

以上是生活随笔為你收集整理的Pandas简明教程:八、Pandas数据透视表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。