當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pandas.pivot_table用法及代碼示例

用法:

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_namestr,默認“全部”

當邊距為 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

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.pivot_table。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。