传递的任何 Series 都将使用其名称属性,除非指定了交叉表的行或列名称。传递的任何包含分类数据的输入都将在交叉表中包含其所有类别,即使实际数据不包含特定类别的任何实例也是如此。如果没有重叠索引,将返回一个空的 DataFrame
- a = np.array(["foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar", "foo", "foo", "foo"], dtype=object)
- b = np.array(["one", "one", "one", "two", "one", "one", "one", "two", "two", "two", "one"], dtype=object)
- c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny", "shiny", "dull", "shiny", "shiny", "dull"], dtype=object)
- pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])
- -----------------------------------------------------------------------------------------
- # 算数运算,先求和
- sum = count.sum(axis=1)
- sum
- -------------------------------------
- # 进行相除操作,得出比例
- pro = count.div(sum, axis=0)
- pro
- -------------------------------------
- import matplotlib.pyplot as plt
- pro.plot(kind='bar', stacked=True)
- plt.show()
代码如下
- df = pd.DataFrame({"A": ["aaa", "aaa", "aaa", "aaa", "aaa","aa", "aa", "aa"],
- "B": ["bbb", "bbb", "bbb", "bb", "bb", "bbb", "bbb", "bb"],
- "C": ["small", "large", "large", "small","small", "large", "small", "small"],
- "D": [1, 2, 2, 3, 3, 4, 5, 6],
- "E": [2, 4, 5, 5, 6, 6, 8, 9]})
- df
- ---------------------------------------------------------------------------------------
- pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum) # 通过求和来聚合值
-
- pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum, fill_value=0) # 可以使用fill_value参数填充缺失的值
-
- pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], aggfunc={'D': np.mean, 'E': np.mean}) # 通过对多个列取平均值进行聚合
-
- pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], aggfunc={'D': np.mean, 'E': [min, max, np.mean]}) # 可以为任何给定值列计算多种类型的聚合
操作演示如下
学习导航:http://xqnav.top/