📜  Python| Pandas.pivot_table()(1)

📅  最后修改于: 2023-12-03 15:34:16.708000             🧑  作者: Mango

Python | Pandas.pivot_table()

概述

Pandas.pivot_table() 是利用 Pandas 库进行数据透视的一个函数,能够帮助我们将表格数据按照某些特定的条件进行聚合、统计或重新排列,以便于我们更快地了解数据的分布规律和基本统计信息。

语法
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
参数
  • data :Pandas DataFrame
  • values :要聚合的列,默认为全部列
  • index:列表、数组或数据框,用于定义行。将对这些值进行聚合。
  • columns:列表、数组或数据框,用于定义列。将对这些值进行聚合。
  • aggfunc:只能使用的聚合函数。默认为'mean',也可使用 numpy 中可用的聚合函数,如'min'、'max'、'sum'、'count'、'std'、'var'等。
  • fill_value:用于替换缺失值
  • margins:是否添加汇总行/列。默认为 False
  • dropna:是否删除结果中的缺失值。默认为True。
  • margins_name:汇总行/列的名称。默认为'All'。
示例

我们通过一个示例来解释 Pandas.pivot_table() 的用法,读入以下表格数据:

import pandas as pd
import numpy as np
 
df = pd.DataFrame({
    "Name": ["Alice", "Bob", "Charlie", "Alice", "Bob", "Charlie", "Alice", "Bob", "Charlie"],
    "City": ["Paris", "Paris", "Paris", "Tokyo", "Tokyo", "Tokyo", "London", "London", "London"],
    "Gender": ["Female", "Male", "Male", "Female", "Male", "Male", "Female", "Male", "Male"],
    "Salary": [5000, 4000, 4500, 6000, 5500, 5000, 7000, 6500, 7500],
    "Age": [25, 30, 35, 40, 45, 50, 55, 60, 65]
})

我们按照城市、性别两个维度来观察薪水,然后填充缺失值,注意这里 aggfunc 传入的是 np.mean() 函数,如果使用平均值面板数据,可以计算缺失值的平均值:

table = pd.pivot_table(df, values='Salary', index=['City', 'Gender'], aggfunc=np.mean, fill_value=0)
print(table)

输出结果:

                  Salary
City    Gender          
London  Female     7000
        Male       7000
Paris   Female     5000
        Male       4250
Tokyo   Male       5166.666667

可以看到,这个数据表格按城市和性别对薪水进行了聚合,填充了缺失值,计算了平均薪水。

注意事项
  • Pandas.pivot_table() 的默认聚合方法是求平均值,如果需要使用其他聚合方法,需要传递 aggfunc 参数;
  • 索引和列名可以是数字、字符串、日期时间或其任何组合,例如 ['Name', 'City'] or ['Age', 'Date'];
  • Pandas.pivot_table() 只能处理数据表格,不能处理 Series 类型的数据结构;
  • Pandas.pivot_table() 不会修改原始数据,而是返回一个新的 DataFrame 类型的数据结构;
  • 如果不需要汇总行/列,可以将 margins 参数设置为 False。
  • Pandas.pivot_table() 只支持单索引。如果需要处理多索引,请使用 Pandas.DataFrame.groupby() 或 Pandas.DataFrame.pivot()。
结论

Pandas.pivot_table() 的灵活性和易用性使之成为 Pandas 库的重要组成部分之一。我们完全可以使用 Pandas.pivot_table() 从大量数据中提取出有价值的信息,以便决策者进行更好的分析和把握决策方向。该函数在 ETL、数据分析、数据挖掘、机器学习、数据可视化等诸多领域都有着广泛的应用。