網站首頁 編程語言 正文
透視表是一種可以對數據動態排布并且分類匯總的表格格式,在常用的python的數據分析非標準庫pandas中體現為pivot_table模塊。
pivot_table數據透視表可以靈活的定制數據分析需求進行匯總,當然在Excel辦公操作中早就存在了數據透視表的工具。如今,數據透視表被應用在python語言中更是給我們帶來了大大地便利。
pivot_table有四個最重要的參數index、values、columns、aggfunc,通過設置不同的參數屬性從而完成不同的數據分析需求。
pivot_table是pandas非標準庫下面的數據透視表模塊,因此需要安裝pandas非標準庫。按照以往的慣例還是采用pip的方式來進行安裝即可。
pip?install?pandas?-i?https://pypi.tuna.tsinghua.edu.cn/simple/
首先,使用傳統的excel讀取函數read_excel將Excel文件中的數據讀取出來,讀取數據返回的是Dataframe格式的數據。
import?pandas?as?pd??#?導入pandas模塊
df?=?pd.read_excel('C:/test/data.xlsx')??#?讀取Excel數據文件
print(df.tail())??#?打印部分結果
#?????????????名稱??年齡????班級???成績??表現
#?21??Python?集中營??24??1739??111??A+
#?22??Python?集中營??25??1740??112??A+
#?23??Python?集中營??26??1741??113??A+
#?24??Python?集中營??27??1742??114??A+
#?25??Python?集中營??28??1743??115??A+
1、pivot_table函數index屬性
我們通過pandas的read_excel函數已經將Excel數據文件讀取并返回DataFrame數據對象。接下來通過數據透視表的方式來進行數據匯總,先來看看使用index屬性是如何匯總結果的。
print(pd.pivot_table(df,?index=[u'名稱']))
#???????????????年齡?????成績??????班級
#?名稱
#?Python?集中營??15.5??102.5??1730.5
上面我們只指定了一個索引'名稱'字段,從結果可以看出pivot_table函數自動將名稱為'Python 集中營'的值匯總了一下,并且將其他的數字屬性的字段全部計算得到了均值。
print(pd.pivot_table(df,?index=[u'名稱',?u'表現']))
#??????????????????年齡?????成績??????班級
#?名稱?????????表現
#?Python?集中營?A+??15.5??102.5??1730.5
若是我們使用了兩個或是兩個以上的字段作為index的值則實際上會進行兩次或兩次以上的分組,這里體現為先對'名稱'字段進行分組、其次再對'表現'字段進行分組。
2、pivot_table函數values屬性
values屬性即在使用時將指定的字段顯示出來,因為有的情況下并不需要將所有的字段都展示出來往往可能用到的是其中的幾個字段的值來參與運算。
print(pd.pivot_table(df,?index=[u'表現'],?values=[u'班級',?u'成績']))
#????????成績??????班級
#?表現
#?A+??102.5??1730.5
需要注意的是values屬性只能用來指定具有數字屬性的字段,可能為了能夠更好的實現分組統計的效果吧!
3、pivot_table函數aggfunc屬性
aggfunc屬性則是對計算方式的設置,也可以同時設置好幾種計算方式將結果展示出來。在前面的統計中并沒有設置,默認則是使用均值的算法來統計匯總信息的。
下面設置兩種的計算方式來統計我們之前的結果,一種還是均值、另一種則是求和的方式將兩種計算模式下的結果都統計出來。
print(pd.pivot_table(df,?index=[u'名稱'],?values=[u'年齡',?u'成績'],?aggfunc=['mean',?'sum']))
#????????????mean?????????sum
#???????????????年齡?????成績???年齡????成績
#?名稱
#?Python?集中營??15.5??102.5??403??2665
可以發現匯總結果分別匯總出來了年齡和成績的平均值、總和,效果還是相當理想的。
4、pivot_table函數columns屬性
columns屬性主要用來顯示字符類型的字段的,若是字段對應的所在行沒有值時則可以使用fill_value函數來填充默認值使數據變得完整,一般來說columns和fill_value是搭配使用的。
print(pd.pivot_table(df,?index=[u'名稱'],?values=[u'年齡',?u'成績'],?aggfunc=['mean',?'sum'],?columns=[u'表現'],
?????????????????????fill_value=0))
#?????????????mean?????????sum
#???????????????年齡?????成績???年齡????成績
#?表現????????????A+?????A+???A+????A+
#?名稱
#?Python?集中營??15.5??102.5??403??2665
原文鏈接:https://mp.weixin.qq.com/s/Q5AQCPDxUTgGEbJLP7n46Q
相關推薦
- 2022-05-17 ribbon和nacos獲取服務列表不一致問題
- 2022-07-08 Python數據分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖_python
- 2022-10-23 Redis?如何清空所有數據_Redis
- 2022-03-03 element樹組件父子關聯
- 2022-10-11 線上nginx偶爾出現502錯誤
- 2022-12-04 Flutter之可滾動組件實例詳解_IOS
- 2022-01-08 解決npm install報錯問題--npm install xxx npm ERR! code E
- 2023-04-26 C語言函數聲明以及函數原型超詳細講解示例_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支