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.1 實現目標格式的透視表

# 分類匯總
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=['重要程度', '客戶名稱'])

軟件信息:

以上就是python 用pandas實現數據透視表功能的詳細內容,更多關於python pandas實現數據透視表的資料請關註WalkonNet其它相關文章!

推薦閱讀: