Python制作數(shù)據(jù)分析透視表的方法詳解
透視表是一種可以對數(shù)據(jù)動(dòng)態(tài)排布并且分類匯總的表格格式,在常用的python的數(shù)據(jù)分析非標(biāo)準(zhǔn)庫pandas中體現(xiàn)為pivot_table模塊。
pivot_table數(shù)據(jù)透視表可以靈活的定制數(shù)據(jù)分析需求進(jìn)行匯總,當(dāng)然在Excel辦公操作中早就存在了數(shù)據(jù)透視表的工具。如今,數(shù)據(jù)透視表被應(yīng)用在python語言中更是給我們帶來了大大地便利。
pivot_table有四個(gè)最重要的參數(shù)index、values、columns、aggfunc,通過設(shè)置不同的參數(shù)屬性從而完成不同的數(shù)據(jù)分析需求。
pivot_table是pandas非標(biāo)準(zhǔn)庫下面的數(shù)據(jù)透視表模塊,因此需要安裝pandas非標(biāo)準(zhǔn)庫。按照以往的慣例還是采用pip的方式來進(jìn)行安裝即可。
pip?install?pandas?-i?https://pypi.tuna.tsinghua.edu.cn/simple/
首先,使用傳統(tǒng)的excel讀取函數(shù)read_excel將Excel文件中的數(shù)據(jù)讀取出來,讀取數(shù)據(jù)返回的是Dataframe格式的數(shù)據(jù)。
import?pandas?as?pd??#?導(dǎo)入pandas模塊
df?=?pd.read_excel('C:/test/data.xlsx')??#?讀取Excel數(shù)據(jù)文件
print(df.tail())??#?打印部分結(jié)果
#?????????????名稱??年齡????班級???成績??表現(xiàn)
#?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函數(shù)index屬性
我們通過pandas的read_excel函數(shù)已經(jīng)將Excel數(shù)據(jù)文件讀取并返回DataFrame數(shù)據(jù)對象。接下來通過數(shù)據(jù)透視表的方式來進(jìn)行數(shù)據(jù)匯總,先來看看使用index屬性是如何匯總結(jié)果的。
print(pd.pivot_table(df,?index=[u'名稱'])) #???????????????年齡?????成績??????班級 #?名稱 #?Python?集中營??15.5??102.5??1730.5
上面我們只指定了一個(gè)索引'名稱'字段,從結(jié)果可以看出pivot_table函數(shù)自動(dòng)將名稱為'Python 集中營'的值匯總了一下,并且將其他的數(shù)字屬性的字段全部計(jì)算得到了均值。
print(pd.pivot_table(df,?index=[u'名稱',?u'表現(xiàn)'])) #??????????????????年齡?????成績??????班級 #?名稱?????????表現(xiàn) #?Python?集中營?A+??15.5??102.5??1730.5
若是我們使用了兩個(gè)或是兩個(gè)以上的字段作為index的值則實(shí)際上會(huì)進(jìn)行兩次或兩次以上的分組,這里體現(xiàn)為先對'名稱'字段進(jìn)行分組、其次再對'表現(xiàn)'字段進(jìn)行分組。
2、pivot_table函數(shù)values屬性
values屬性即在使用時(shí)將指定的字段顯示出來,因?yàn)橛械那闆r下并不需要將所有的字段都展示出來往往可能用到的是其中的幾個(gè)字段的值來參與運(yùn)算。
print(pd.pivot_table(df,?index=[u'表現(xiàn)'],?values=[u'班級',?u'成績'])) #????????成績??????班級 #?表現(xiàn) #?A+??102.5??1730.5
需要注意的是values屬性只能用來指定具有數(shù)字屬性的字段,可能為了能夠更好的實(shí)現(xiàn)分組統(tǒng)計(jì)的效果吧!
3、pivot_table函數(shù)aggfunc屬性
aggfunc屬性則是對計(jì)算方式的設(shè)置,也可以同時(shí)設(shè)置好幾種計(jì)算方式將結(jié)果展示出來。在前面的統(tǒng)計(jì)中并沒有設(shè)置,默認(rèn)則是使用均值的算法來統(tǒng)計(jì)匯總信息的。
下面設(shè)置兩種的計(jì)算方式來統(tǒng)計(jì)我們之前的結(jié)果,一種還是均值、另一種則是求和的方式將兩種計(jì)算模式下的結(jié)果都統(tǒng)計(jì)出來。
print(pd.pivot_table(df,?index=[u'名稱'],?values=[u'年齡',?u'成績'],?aggfunc=['mean',?'sum'])) #????????????mean?????????sum #???????????????年齡?????成績???年齡????成績 #?名稱 #?Python?集中營??15.5??102.5??403??2665
可以發(fā)現(xiàn)匯總結(jié)果分別匯總出來了年齡和成績的平均值、總和,效果還是相當(dāng)理想的。
4、pivot_table函數(shù)columns屬性
columns屬性主要用來顯示字符類型的字段的,若是字段對應(yīng)的所在行沒有值時(shí)則可以使用fill_value函數(shù)來填充默認(rèn)值使數(shù)據(jù)變得完整,一般來說columns和fill_value是搭配使用的。
print(pd.pivot_table(df,?index=[u'名稱'],?values=[u'年齡',?u'成績'],?aggfunc=['mean',?'sum'],?columns=[u'表現(xiàn)'], ?????????????????????fill_value=0)) #?????????????mean?????????sum #???????????????年齡?????成績???年齡????成績 #?表現(xiàn)????????????A+?????A+???A+????A+ #?名稱 #?Python?集中營??15.5??102.5??403??2665
到此這篇關(guān)于Python制作數(shù)據(jù)分析透視表的方法詳解的文章就介紹到這了,更多相關(guān)Python透視表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python pcm音頻添加頭轉(zhuǎn)成Wav格式文件的方法
今天小編就為大家分享一篇python pcm音頻添加頭轉(zhuǎn)成Wav格式文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python實(shí)現(xiàn)日期字符串轉(zhuǎn)換為指定格式的日期
在Python編程中,日期處理是一個(gè)常見的任務(wù),本文將詳細(xì)介紹如何在Python中將日期字符串轉(zhuǎn)換為指定格式的日期,感興趣的小伙伴可以學(xué)習(xí)一下2024-04-04
解決Python import docx出錯(cuò)DLL load failed的問題
今天小編就為大家分享一篇解決Python import docx出錯(cuò)DLL load failed的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
利用Python實(shí)現(xiàn)命令行版的火車票查看器
當(dāng)你想查詢一下火車票信息的時(shí)候,你還在上12306官網(wǎng)嗎?或是打開你手機(jī)里的APP?下面讓我們來用Python寫一個(gè)命令行版的火車票查看器, 只要在命令行敲一行命令就能獲得你想要的火車票信息!如果你剛掌握了Python基礎(chǔ),這將是個(gè)不錯(cuò)的小練習(xí)。2016-08-08
keras實(shí)現(xiàn)theano和tensorflow訓(xùn)練的模型相互轉(zhuǎn)換
這篇文章主要介紹了keras實(shí)現(xiàn)theano和tensorflow訓(xùn)練的模型相互轉(zhuǎn)換,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

