python 用 pandas 實現數據透視表功能詳解


透視表是一種可以對數據動態排布並且分類匯總的表格格式。對於熟練使用 excel 的伙伴來說,一定很是親切!

pd.pivot_table() 語法:

pivot_table(data,    # DataFrame
            values=None,    #
            index=None,    # 分類匯總依據
            columns=None,    #
            aggfunc='mean',    # 聚合函數
            fill_value=None,    # 對缺失值的填充
            margins=False,    # 是否啟用總計行/列
            dropna=True,    # 刪除缺失
            margins_name='All'   # 總計行/列的名稱
           )

 

1、銷量數據的透視

 

 1.1 讀入數據

import os import numpy as np import pandas as pd file_name = os.path.join(path, 'Excel_test.xls') df = pd.read_excel(io=file_name,    # 工作簿路徑
                   sheetname='透視表',    # 工作表名稱
                   skiprows=1,    # 要忽略的行數
                   parse_cols='A:D'    # 讀入的列
 ) df

 

 1.2 數據透視

# 透視數據
df_p = df.pivot_table(index='客戶名稱',    # 透視的行,分組依據
                      values='銷量',    #
                      aggfunc='sum'    # 聚合函數
 ) # 對透視表進行降序排列
df_p = df_p.sort_values(by='銷量',    # 排序依據
                        ascending=False    # 是否升序排列
 ) # 設置數值格式
df_p = df_p.round({'銷量': 0}).astype('int') # 添加列
ks = df_p['銷量']//100 df_p['重要程度'] =  [''*k for k in ks] df_p

 

1.3 重新設置圖示表的索引

df_p['客戶名稱'] = df_p.index df_p.set_index(keys=['重要程度', '客戶名稱'])

 

 

注:以上操作從理論和實踐方面看都沒什么問題,但模仿 excel 的痕跡濃重了些,更 python 的操作是用 groupby-applay 的方法。

 

2 用 分組聚合 實現數據透視

 

grouped = df.groupby(by='客戶名稱') grouped['銷量'].agg('sum')

 

 

 

2.2 實現目標格式的透視表

# 分類匯總
df_p = df.groupby(by='客戶名稱'    # 分類
                 ).agg('sum'    # 匯總
                      ).sort_values(by='銷量', ascending=False    # 排序
                                   ).round({'銷量': 0}    # 設置精度
                                          ).astype('int')    # 數據類型轉換

# 添加列
ks = df_p['銷量']//100 df_p['重要程度'] =  [''*k for k in ks] df_p['客戶名稱'] = df_p.index # 層次索引
df_p.set_index(keys=['重要程度', '客戶名稱'])

 

 

軟件信息:

 


免責聲明!

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



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