Pandas 基礎(10) - 用 Pivot table 做格式轉換


Pivot allows you to transform or reshape data.
Pivot 可以幫助我們改變數據的格式, 下面兩個例子可以作為參考:

下面來看下具體實現, 首先引入一個 csv 文件(已上傳)

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather.csv') 

輸出:

格式轉換, 設置 'date' 為索引列, 也就讓'date' 做每一行的輸出依據, 然后設置'city' 為每一列輸出的依據:

df.pivot(index='date', columns='city') 

還可以給出第三個參數, 指定輸出的內容:

df.pivot(index='date', columns='city', values='humidity') 

下面來看下 pivot table:
pivot table is used to summarize and aggregate data inside dataframe.
pivot table 可以用來很好地總結整合數據. 下面通過一個例子來看一下:

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather2.csv') 

輸出:

從這個輸出可以看出目前的數據結構很亂, 這時, 我們就可以用 pivot table 來做整合:

df.pivot_table(index='city', columns='date') 


從結果可以看出, 這樣整合之后, 取的是每天每個城市每個事件的平均值.
對於 pivot_table() 函數, 我們還可以通過第三個參數 'aggfun' 來做很多的變化, 下面分別來看下:

取和:

df.pivot_table(index='city', columns='date', aggfunc='sum') 

取數據的條數:

df.pivot_table(index='city', columns='date', aggfunc='count') 

求差異:

df.pivot_table(index='city', columns='date', aggfunc='diff') 

求平均值, 其實如果不加這個參數, 默認也是求平均值:

df.pivot_table(index='city', columns='date', aggfunc='mean') 

橫向縱向分別求和的平均值:

df.pivot_table(index='city', columns='date', margins=True) 

以上, 大家可以實際運行一下, 看看輸出的結果.

下面介紹最后一個點, 對數據進行分組整理:
首先, 還是先引入一個文件做例子:

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather3.csv') 

輸出:

然后, 我們想實現的是把數據按照月份分組:

df.pivot_table(index=pd.Grouper(freq='M', key='date'), columns='city') 

但是按照上面的代碼運行, 會報錯, 提示 'date' 列不是時間格式, 所以需要先把'date' 列的格式改成時間: 

df['date'] = pd.to_datetime(df['date']) 

最后輸出結果:

以上就是關於 pivot 的常用方法, enjoy~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM