用法:
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)
创建一个 spreadsheet-style 数据透视表作为 DataFrame。
数据透视表中的级别将存储在结果 DataFrame 的索引和列上的 MultiIndex 对象(分层索引)中。
- data: DataFrame
- values:要聚合的列,可选
- index:列、Grouper、数组或前一个列表
如果传递一个数组,它必须与数据的长度相同。该列表可以包含任何其他类型(列表除外)。在数据透视表索引上分组的键。如果传递了一个数组,则它的使用方式与列值相同。
- columns:列、Grouper、数组或前一个列表
如果传递一个数组,它必须与数据的长度相同。该列表可以包含任何其他类型(列表除外)。在数据透视表列上分组的键。如果传递了一个数组,则它的使用方式与列值相同。
- aggfunc:函数,函数列表,dict,默认 numpy.mean
如果传递函数列表,则生成的数据透视表将具有分层列,其顶层是函数名称(从函数对象本身推断)如果传递 dict,则键是要聚合的列,值是函数或函数列表。
- fill_value:标量,默认无
用于替换缺失值的值(在结果数据透视表中,聚合后)。
- margins:布尔值,默认为 False
添加所有行/列(例如小计/总计)。
- dropna:布尔值,默认为真
不要包括其条目全部为 NaN 的列。
- margins_name:str,默认“全部”
当边距为 True 时将包含总计的行/列的名称。
- observed:布尔值,默认为 False
这仅适用于任何 groupers 是分类的。如果为真:仅显示分类分组的观察值。如果为 False:显示分类分组的所有值。
- sort:布尔值,默认为真
指定是否应该对结果进行排序。
- DataFrame
Excel 风格的数据透视表。
参数:
返回:
注意:
有关更多示例,请参阅用户指南。
例子:
>>> df = pd.DataFrame({"A":["foo", "foo", "foo", "foo", "foo", ... "bar", "bar", "bar", "bar"], ... "B":["one", "one", "one", "two", "two", ... "one", "one", "two", "two"], ... "C":["small", "large", "large", "small", ... "small", "large", "small", "small", ... "large"], ... "D":[1, 2, 2, 3, 3, 4, 5, 6, 7], ... "E":[2, 4, 5, 5, 6, 6, 8, 9, 9]}) >>> df A B C D E 0 foo one small 1 2 1 foo one large 2 4 2 foo one large 2 5 3 foo two small 3 5 4 foo two small 3 6 5 bar one large 4 6 6 bar one small 5 8 7 bar two small 6 9 8 bar two large 7 9
第一个示例通过求和来聚合值。
>>> table = pd.pivot_table(df, values='D', index=['A', 'B'], ... columns=['C'], aggfunc=np.sum) >>> table C large small A B bar one 4.0 5.0 two 7.0 6.0 foo one 4.0 1.0 two NaN 6.0
我们还可以使用
fill_value
参数填充缺失值。>>> table = pd.pivot_table(df, values='D', index=['A', 'B'], ... columns=['C'], aggfunc=np.sum, fill_value=0) >>> table C large small A B bar one 4 5 two 7 6 foo one 4 1 two 0 6
下一个示例通过取多列的平均值进行聚合。
>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], ... aggfunc={'D':np.mean, ... 'E':np.mean}) >>> table D E A C bar large 5.500000 7.500000 small 5.500000 8.500000 foo large 2.000000 4.500000 small 2.333333 4.333333
我们还可以为任何给定的值列计算多种类型的聚合。
>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], ... aggfunc={'D':np.mean, ... 'E':[min, max, np.mean]}) >>> table D E mean max mean min A C bar large 5.500000 9 7.500000 6 small 5.500000 9 8.500000 8 foo large 2.000000 5 4.500000 4 small 2.333333 6 4.333333 2
相关用法
- Python pandas.pivot用法及代码示例
- Python pandas.plotting.autocorrelation_plot用法及代码示例
- Python pandas.plotting.bootstrap_plot用法及代码示例
- Python pandas.period_range用法及代码示例
- Python pandas.period_range()用法及代码示例
- Python pandas.plotting.scatter_matrix用法及代码示例
- Python pandas.plotting.radviz用法及代码示例
- Python pandas.plotting.parallel_coordinates用法及代码示例
- Python pandas.plotting.andrews_curves用法及代码示例
- Python pandas.plotting.lag_plot用法及代码示例
- Python pandas.plotting.boxplot用法及代码示例
- Python pandas.arrays.IntervalArray.is_empty用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.read_pickle用法及代码示例
- Python pandas.Index.value_counts用法及代码示例
- Python pandas.DatetimeTZDtype用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.pivot_table。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。