【发布时间】:2016-04-01 19:26:34
【问题描述】:
我正在尝试在 Stata 中复制非常有用的 tabulate twoway 函数,在同一输出中,您可以看到 频率、相应的 行百分比 和相应的数据中两个分类变量的每个可能组合的列百分比。
也就是说,结果表中的每个单元格都包含与上述数字对应的三个堆叠值。
Stata 中的示例输出:这是单个变量 汽车类型 的表格,其中,在数据中,我有 52 个观察值,其中汽车类型为 domestic,22 个观察值其中汽车类型等于foreign.
Domestic Foreign Total
52 22 74
70.27 29.73 100.00
100.00 100.00 100.00
在 Pandas 中可以做到这一点吗?示例:
df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 6,
'B' : ['A', 'B', 'C'] * 8,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
'D' : np.random.randn(24),
'E' : np.random.randn(24)})
可以结合的东西
pd.crosstab(df.A,df.B)
pd.crosstab(df.A, df.B).apply(lambda r: r/r.sum(), axis=1)
和pd.crosstab(df.A, df.B).apply(lambda r: r/r.sum(), axis=0)
在相同的输出上。你怎么看?我正在考虑aggfunc,但在这里我需要获取整个数据框,而不仅仅是一个系列......
谢谢!
【问题讨论】: