15 numpy pivot-table crosstab scipy pandas
pandas.crosstab和Pandas数据透视表似乎都提供了完全相同的功能.有什么不同吗?
roo*_*oot 21
两者之间的主要区别是pivot_table期望您的输入数据已经是DataFrame; 你传递一个数据帧到pivot_table并指定index/ columns/ values通过将列名作为字符串.使用时cross_tab,您不一定需要输入DataFrame,因为您只需为index/ columns/ 传递类似数组的对象values.
纵观源代码的crosstab,它本质上需要你通过阵列状物体,创建一个数据帧,然后调用pivot_table适当的.
通常,pivot_table如果您已经拥有DataFrame,请使用,因此您不必再次创建相同的DataFrame.如果您从类似数组的对象开始并且仅关注透视数据,请使用crosstab.在大多数情况下,我认为您决定使用哪种功能并不会产生任何影响.
jez*_*ael 12
是否相同,如果在pivot_table使用aggfunc=len和fill_value=0:
pd.crosstab(df['Col X'], df['Col Y'])
pd.pivot_table(df, index=['Col X'], columns=['Col Y'], aggfunc=len, fill_value=0)
Run Code Online (Sandbox Code Playgroud)
编辑:有更多的区别:
默认值aggfunc不同:pivot_table- np.mean,crosstab- len.
参数margins_name仅在pivot_table.
在pivot_table你可以Grouper用于index和columns关键字.
我想如果你只需要频率表,crosstab功能就更好了.
小智 11
不幸的是,pivot_table没有争论normalize。
在 中crosstab,normalize参数通过将每个单元格除以单元格总和来计算百分比,如下所述:
normalize = 'index'将每个单元格除以其行的总和normalize = 'columns'将每个单元格除以其列的总和normalize = True将每个单元格除以表中所有单元格的总和| 归档时间: |
|
| 查看次数: |
8349 次 |
| 最近记录: |